Perché abbiamo bisogno della funzione di riavvio in binari diversi?
shutdown -r
e
reboot
O differiscono in qualcosa?
Perché abbiamo bisogno della funzione di riavvio in binari diversi?
shutdown -r
e
reboot
O differiscono in qualcosa?
Risposte:
Non abbiamo necessariamente bisogno di entrambi, ma li abbiamo entrambi a causa della storia di Unix e della sua molteplicità di versioni.
Dalle rispettive pagine man:
l'arresto è più generico e più potente, mentre il riavvio è più semplice e facile da ricordare.
shutdown ti consente di specificare un argomento temporale (per riavviare in 5 minuti, ad esempio) e ti consente di fare molte cose oltre al riavvio, tra cui:
Tuttavia, se si desidera semplicemente riavviare il sistema ora, è più facile digitare reboot
di shutdown -r now
.
shutdown
utilizzo ora sono predefinite. Non cercare mai di ottenere aiuto per lo spegnimento shutdown -h
, soprattutto su un server da qualche parte in un datacenter.
I due comandi fanno qualcosa di diverso, tuttavia possono finire per chiamarsi, motivo per cui sembrano fare la stessa cosa!
reboot
invocherà il kernel per attivare effettivamente un riavvio dell'hardware. Tuttavia, lo farà solo se il sistema è pronto per l'arresto: tutti i daemon e i processi utente devono essere arrestati, i file system smontati, ecc. Quindi controlla il runlevel del sistema e, se non è 0 o 6, invocherà effettivamente il shutdown
comando per te.
shutdown
causa la modifica del runlevel di sistema. La modifica del runlevel (su 0 per halt o 6 per il riavvio) esegue molti script in /etc/rc0.d o rc6.d che arrestano i demoni, smontano i filesystem, ecc. Infine, questi script invocano halt
o reboot
- questa volta il sistema è in il runlevel corretto e indicano al kernel di riavviare (o arrestare).
Oltre a ciò che ha scritto iconoclast, esiste una distinzione importante tra i due programmi: shutdown
is in /sbin
, while reboot
is in /usr/bin
.
Perché è importante, chiedi? Te lo dirò.
Le cose sotto /usr
sono quelle che non devono essere disponibili fino a quando il sistema non viene avviato abbastanza lontano da rendere il sistema minimamente funzionale. Directory di livello superiore che sono tradizionalmente mai montati su filesystem separati - /bin
, /etc
, /sbin
, ecc - dovrebbero essere a disposizione, mentre il sistema sta raggiungendo questo stato minimamente utile. Ci sono varie implicazioni di questo disegno; per esempio, è uno stile sbagliato scrivere la clausola "stop" di uno script di init SysV che utilizza programmi in /usr/bin
se esiste un'alternativa in /bin
o /sbin
.
shutdown
è l'utilità chiave, quella sempre disponibile. reboot
è solo una comoda utility.
reboot
è in /sbin
Debian (con SysVinit) e Ubuntu (con upstart).