È importante seguire le procedure corrette quando si spenge un sistema Linux. Se non lo fate, il filesystem probabilmente si corromperà e i file diventeranno illeggibili. Questo perché Linux utilizza una cache su disco, che non scrive sul disco tutto insieme, ma solo ad intervalli; un comportamento del genere migliora moltissimo la performance, ma sta anche a significare che se spengete semplicemente il computer d'improvviso la cache può contenere molti dati, e quello che si trova sul disco può non essere un filesystem che funziona perfettamente (perché solo alcune cose sarebbero scritte sul disco).
Un'altra ragione per non spengere direttamente l'interruttore è che in un sistema multitasking ci possono essere molti processi attivi in background, e interrompere l'alimentazione può essere piuttosto disastroso. Usando la corretta sequenza di shutdown vi assicurate che tutti i processi in background possano salvare i propri dati.
Il comando per spengere correttamente un sistema Linux è shutdown . Normalmente può essere usato in due modi.
Se vi trovate su un sistema dove siete l'unico utente, il modo normale di usare shutdown è uscire da tutti i programmi, scollegarsi da tutte le console virtuali, collegarsi come root su una di esse (o restare collegati come root se già lo siete, ma dovreste passare nella directory root, per evitare problemi nell'unmount dei filesystem) e dare il comando shutdown -h now (sostituite now con un segno + ed un numero di minuti se volete un ritardo, anche se di solito non è questo il caso in un sistema monoutente).
In alternativa, se il vostro sistema ha molti utenti, usate il comando shutdown -h +tempo messaggio, dove tempo è il tempo in minuti prima che il sistema venga fermato, e message è una breve spiegazione del perché il sistema viene spento.
# shutdown -h +10 'Installeremo un nuovo disco. Il sistemaIn questo modo tutti verranno avvertiti che il sistema si fermerà tra dieci minuti, e che è meglio che si scolleghino o perderanno dei dati. L'avviso viene visualizzato su tutti i terminali su cui c'è un utente collegato, inclusi tutti gli xterm :
> dovrebbe tornare in linea in tre ore.'
#
Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995...
Installeremo un nuovo disco. Il sistema
dovrebbe tornare in linea in tre ore.
The system is going DOWN for system halt in 10 minutes !!
L'avviso viene ripetuto automaticamente alcune volte prima dello spegnimento, ad intervalli sempre più brevi.
Quando comincia il vero shutdown dopo i vari ritardi, viene fatto l'unmount di tutti i filesystem (eccetto quello di root), i processi utente (se qualcuno è ancora collegato) vengono uccisi, i demoni vengono fermati, ed in generale tutto si mette a posto. Fatto questo, init stampa un messaggio che indica che potete spengere la macchina. Allora, e solo allora le vostre dita si possono muovere nella direzione dell'interruttore.
Talvolta, anche se raramente sui buoni sistemi, è impossibile fare lo shutdown in maniera corretta. Ad esempio, se si ha un kernel panic, e il kernel muore, o esplode, o in genere non si comporta come dovrebbe, può essere totalmente impossibile dare nuovi comandi, e quindi è possibile che sia difficile fare bene lo shutdown, e tutto quello che potete fare è sperare che non sia successo niente di grave e spengere il computer. Se i danni sono un po' meno pesanti (ad esempio, qualcuno ha preso ad accettate la vostra tastiera), ed il kernel e il programma update stanno ancora girando normalmente, probabilmente è una buona idea aspettare un paio di minuti e dare la possibilità ad update di svuotare la cache, e solo allora spengere il computer.
Alcuni per fare lo shutdown usano il comando sync 6.3 tre volte, aspettare che l'I/O del disco sia finito, e spengere il computer. Se non ci sono programmi attivi, è praticamente la stessa cosa che usare shutdown , ma non fa l'unmount dei filesystem, e ciò può provocare dei problemi con il flag dell'ext2fs di ``filesystem pulito''. Il metodo del sync triplo non è raccomandato.
(In caso ve lo stiate chiedendo, la ragione per tre sync è che nei primi UNIX, quando i comandi venivano digitati singolarmente, tre sync dava di solito tempo sufficiente a finire qualsiasi I/O del disco.)