Guida dell'amministratore di sistema di Linux: Versione 0.6.2 | ||
---|---|---|
Indietro | Capitolo 6. Avvio e spengimento del sistema | Avanti |
È 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 la cache del 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 vi sono state scritte).
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 radice su una di esse (o restare collegati come root se già lo siete, ma dovreste passare nella directory root, per evitare problemi nello smontare i 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 messaggio è una breve spiegazione del perché il sistema viene spento.
# shutdown -h +10 'Dobbiamo installare un nuovo disco. Il sistema dovrebbe tornare in linea tra tre ore.' #In 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:
Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995... Dobbiamo installare un nuovo disco. Il sistema dovrebbe tornare in linea tra 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, vengono smontati tutti i filesystem (eccetto quello di radice), i processi utente (se qualcuno è ancora collegato) vengono uccisi, i daemon 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, esplode, o in genere non si comporta come dovrebbe, può essere totalmente impossibile dare nuovi comandi, 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, dare la possibilità ad update di svuotare la cache e solo allora spengere il computer.
Alcuni per fare lo shutdown usano il comando sync[1] tre volte, aspettano che l'I/O del disco sia finito e spengono il computer. Se non ci sono programmi attivi è praticamente la stessa cosa che usare shutdown, ma non smonta i filesystem e ciò può provocare dei problemi con il codice 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).
[1] | sync fa il flush della cache di buffer. |