Perché abbiamo bisogno della funzione di riavvio in binari diversi?


12

Perché abbiamo bisogno della funzione di riavvio in binari diversi?

shutdown -r

e

reboot

O differiscono in qualcosa?


1
Vedi unix.stackexchange.com/questions/8690/… per la distinzione: i comandi possono comportarsi diversamente a seconda del sistema operativo (ma generalmente fanno la stessa cosa in Linux).
PleaseStand,

Come indicato di seguito e spiegato in dettaglio su unix.stackexchange.com/a/196014/5132 , la premessa di questa domanda è falsa sui sistemi operativi Linux e di sistema. Questi non sono binari diversi su tali sistemi.
JdeBP,

Risposte:


15

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'utilità di arresto è stata visualizzata in 4.0BSD.
  • Un'utilità di riavvio è stata visualizzata nella versione 6 AT&T UNIX.

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:

  • puoi semplicemente dare il calcio d'inizio agli utenti e non arrestarli
  • puoi mettere il sistema in sospensione invece di spegnerlo
  • puoi semplicemente spegnere senza riavviare (come il comando halt)
  • puoi includere un messaggio di avviso personalizzato per gli utenti sul sistema

Tuttavia, se si desidera semplicemente riavviare il sistema ora, è più facile digitare rebootdi shutdown -r now.


1
Curiosità: alcune versioni di shutdownutilizzo ora sono predefinite. Non cercare mai di ottenere aiuto per lo spegnimento shutdown -h, soprattutto su un server da qualche parte in un datacenter.
Residuum,

6

I due comandi fanno qualcosa di diverso, tuttavia possono finire per chiamarsi, motivo per cui sembrano fare la stessa cosa!

rebootinvocherà 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 shutdowncomando per te.

shutdowncausa 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 halto reboot- questa volta il sistema è in il runlevel corretto e indicano al kernel di riavviare (o arrestare).


6

Oltre a ciò che ha scritto iconoclast, esiste una distinzione importante tra i due programmi: shutdownis in /sbin, while rebootis in /usr/bin.

Perché è importante, chiedi? Te lo dirò.

Le cose sotto /usrsono 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/binse esiste un'alternativa in /bino /sbin.

shutdownè l'utilità chiave, quella sempre disponibile. rebootè solo una comoda utility.


1
rebootè in /sbinDebian (con SysVinit) e Ubuntu (con upstart).
Gilles 'SO- smetti di essere malvagio'

Ok, quindi meta-risposta: conosci il tuo sistema. :) Uso CentOS il più delle volte.
Warren Young,

Lo stesso vale per Arch (systemd), entrambi in / sbin
daisy il

In effetti, sui sistemi operativi Linux systemd non è nemmeno l'utilità chiave, come nel caso di systemd tutti questi comandi sono (come dice il docd systemd) comandi di "compatibilità". In effetti, la premessa della domanda è falsa. Non si trovano in binari diversi. Per i dettagli, consultare unix.stackexchange.com/a/196014/5132 .
JdeBP,
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.