Perché "shutdown -r now" si comporta diversamente da "reboot -f" su Debian Linux?


11

Di recente ho avuto a che fare con un fastidioso, intermittente problema di mount point client / server NFS. Quando il problema si presenta sul client non riesco a smontare, insieme ad altri comportamenti strani. L'unica risoluzione immediata che ho ad oggi è riavviare la casella client.

Ma shutdown -r nownon funziona affatto. Da allora ho scoperto reboot -fche non riavviare il sistema. Perché? Ho letto le pagine man ma nulla sembra rispondere alla mia domanda.

Perché si shutdown -r nowcomporta diversamente reboot -f?

(Sto continuando a risolvere il problema NFS, ma questa non è la mia domanda qui.)

Risposte:


20

Dalla pagina man di spegnimento:

Una volta scaduto TIME, shutdown invia una richiesta al demone init (8) per portare il sistema nel runlevel appropriato.

initavvia e arresta i lavori quando il sistema cambia i runlevel. Quando si accede al runlevel 6 a causa di un riavvio, il sistema esegue tutti gli script in /etc/rc6.d. Poiché il tuo sistema non risponde shutdown, è probabile che uno script in /etc/rc6.d(probabilmente K05nfs-commondati i tuoi problemi NFS) sia bloccato, non consentendo il completamento della sequenza di arresto. In effetti, l'ultima cosa che init esegue quando si passa al runlevel 6 è reboot -d -f -i.

reboot -f salta tutti gli script e riavvia direttamente il sistema.


Grazie mille per aver collegato la tua risposta al mio contesto.
Stu Thompson,

12

shutdownindica initdi avviare la procedura di spegnimento, che prevede che gli utenti registrati sappiano che il sistema si sta spegnendo, uccidendo tutti i processi con grazia, smontando e sincronizzando le unità e così via. Ti stai bloccando qui perché i processi bloccati in attesa di IO tendono ad essere molto difficili da uccidere e il tuo mount NFS bloccato non può essere smontato.

reboot -f, d'altra parte, riavvia immediatamente il server senza farlo. ( rebootè il programma che initchiama per spegnere il server. Senza il -fflag, controllerà se initpensa che sia attualmente in fase di riavvio e, in caso contrario, chiamerà shutdowninvece per avviare il processo).


Grazie mille per aver collegato la tua risposta al mio contesto.
Stu Thompson,

4

Perché 'reboot -f' non entra nel runlevel 0 - dice al SO di reinizializzare direttamente la CPU. La pagina man sul mio box Linux più vicino dice:

 -f     Force halt or reboot, don't call shutdown(8)

La pagina man di shutdown spiega di più.


1

Se usi l' intropzione sui tuoi montaggi NFS, shutdown -r nowdovresti essere in grado di terminare i processi in attesa su NFS IO. Ciò può comportare la corruzione del file, ma probabilmente non altro che la shutdown -fcreazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.