Les changements dans les tampons mémoires [buffers] ne sont pas immédiatement répercutés sur disque, on parle d'écritures asynchrones. Cela permet d'améliorer notablement les performances des opérations d'E/S. Mais le système est susceptible de perdre des données en cas d'arrêt imprévu (c'est moins le cas aujourd'hui pour les systèmes de fichiers journalisés).
Savoir arrêter ou rebooter son système correctement permet d'éviter bien des problèmes. Ils existent plusieurs méthodes :
Utiliser la commande /sbin/shutdown
Utiliser la commande /sbin/halt ou /sbin/reboot
Utiliser la commande (GNU/Linux) telinit ou init.
Utiliser la commande (GNU/Linux) /sbin/poweroff.
SYNOPSIS :
shutdown[-tsec] [-arkhncfF] [time] [warning-message]
C'est la manière la plus sûre pour :
arrêter proprement (
-h) le système,rebooter proprement (
-r) le système,passer en mode mono-utilisateur (option par défaut).
Cette commande prévient les processus en cours d'exécution en leur envoyant le signal de terminaison SIGTERM. Elle notifie au processus INIT le changement de runlevel :
0 [init 0] : arrêt.
1 [init 1] : mode mono-utilisateur, maintenance.
6 [init 6] : reboot.
Arrêter le système immédiatement [runleval 0] : /sbin/shutdown -h now.
Arrêter dans 20 minutes [runlevel 0] :
# /sbin/shutdown -h +20 "Arret du systeme, pour maintenance"
Reboot à 12h30 (runlevel 6) :
# /sbin/shutdown -r 12:30
SYNOPSIS :
halt[-n] [-w] [-d] [-f] [-i]
Exécute les tâches essentielles pour l'arrêt du système (appelé par la commande shutdown avec l'argument -h) :
termine les processus non essentiels.
exécute l'appel système call.
attend que toutes les écritures soient complètes.
arrête le noyau.
Arrêter le système immédiatement : # /sbin/halt
SYNOPSIS :
reboot[-n] [-w] [-d] [-f] [-i]
Fonctionnement similaire à la commande halt, mais effectue un redémarrage [reboot].
« Rebooter » le système immédiatement :
# /sbin/reboot
La commande telinit est un lien symbolique sur init.
SYNOPSIS :
init[-a] [-s] [-b] [-zxxx] [0123456Ss]
Passer en mode maintenance (mono-utilisateur) # /sbin/init 1