Je vois toujours des gens recommander l'utilisation d' sync; sync; sync; sleep 30; halt
incantations lorsqu'ils parlent d'arrêter ou de redémarrer Linux.
J'utilise Linux depuis sa création et bien que ce soit la procédure recommandée dans les jours BSD 4.2 / 4.3 et SunOS 4, je ne me souviens pas que je devais le faire pendant au moins les dix dernières années, au cours desquelles j'ai probablement a subi l'arrêt / le redémarrage de Linux peut-être des milliers de fois.
Je soupçonne que c'est un anachronisme depuis l'époque où le noyau ne pouvait pas démonter et synchroniser le système de fichiers racine et d'autres systèmes de fichiers critiques requis même en mode mono-utilisateur (par exemple / tmp), et il était donc nécessaire de lui dire explicitement de vider autant de données que possible sur le disque.
De nos jours, sans trouver encore le code pertinent dans la source du noyau (en fouillant sur http://lxr.linux.no et google), je soupçonne que le noyau est assez intelligent pour démonter proprement même le système de fichiers racine et que le système de fichiers est assez intelligent pour effectuer efficacement une synchronisation (2) avant de se démonter pendant un shutdown
/ reboot
/ normal poweorff
.
Le "sync; sync; sync"
n'est nécessaire que dans les cas extrêmes où le système de fichiers ne se démonte pas proprement (par exemple, défaillance du disque physique) ou lorsque le système est dans un état qui ne force que le redémarrage direct (8) à le sortir de son gel (par exemple, la charge est trop élevé pour lui permettre de planifier la commande d'arrêt).
Je ne fais également jamais la sync
procédure avant de démonter les périphériques amovibles et je ne rencontre jamais de problème.
Un autre exemple - Xen permet à la DomU de recevoir une shutdown
commande du Dom0, ceci est considéré comme un "arrêt net" sans que personne n'ait à se connecter et à taper le magique d' sync; sync; sync
abord.
Ai-je raison ou ai-je eu de la chance pour quelques milliers d'arrêts du système?
la source
Réponses:
La raison pour laquelle les gens s'exécuteraient
sync; sync
avant ahalt
est que lahalt
commande n'arrêterait pas proprement le système sur les anciens linux. La bonne façon de procéder sur les systèmes SYSVr4 a toujours été de dire à init de passer à un niveau d'exécution différent.BSD et SunOS 4 ne sont pas des systèmes d'exploitation SYSVr4, c'est pourquoi ils diffèrent. Solaris (SunOS 5) est SYSVr4 et Linux sélectionne les bits de la norme SYSVr4 qu'il souhaite utiliser.
Utiliser halt est en fait une très mauvaise façon de le faire sur la plupart des UNIX (Linux étant une des exceptions) car il ne passe pas par les scripts d'initialisation pour effectuer des choses comme arrêter les processus et démonter les disques - il arrête juste le processeur.
Si vous ne pouvez garantir que vous ne jamais, jamais utiliser tout type de système UNIX que Linux, vous pouvez continuer à utiliser
halt
- s'il y a une chance que vous allez utiliser d' autres unix alors je vous recommande de prendre l'habitude d'utiliserinit _runlevel_
oushutdown
.La
shutdown
commande indique en fait auinit
processus de modifier son niveau d'exécution niveau d' exécution - ce faisant, init procède ensuite à l'exécution de chacun des scripts d'initialisation K * et S * init associés à ce niveau d'exécution. L'un des scripts du niveau d'exécution 0 effectue le démontage des systèmes de fichiers.Sous Linux, la
halt
commande appelle simplement lashutdown
commande à moins que le niveau d'exécution soit déjà 0 (arrêt) ou 6 (redémarrage) de toute façon ; donc pas de perte là-bas.Le fait de démonter un système de fichiers en utilisant
umount
synchronisera les données sur le disque avant de les démonter.Si vous avez exécuté
sync; sync; halt
sous Linux, vous aurez été d'accord avec l'état du système de fichiers parce que les développeurs se sont assurés que celahalt
fait la bonne chose; cependant il serait plus correct d'utiliser:shutdown now
la source
halt
appelsshutdown
qui appelleumount
qui effectue une synchronisation.L'utilisation d'
sync
appels multiples devait permettre au système d'exploitation et aux disques de vider les files d'attente d'écriture."sync; sync; sync"
n'était pas considéré comme utile; on l'a fait"sync<cr> sync<cr> sync<cr"
et le retard tandis que votre ASR-33 a fait le retour chariot / nouvelle ligne a fourni suffisamment de retard. Halt a toujours appelé la synchronisation; la question était de savoir s'il y aurait suffisamment de temps pour vider les files d'attente avant de couper l'alimentation.L'affiche originale
sync; sleep 30
est plus conforme à ce qui était prévu.la source
Je ne peux que vous expliquer pourquoi vous émettez
sync
plusieurs fois. La commande planifie le vidage sur disque mais revient avant la fin du vidage réel. Toutesync
commande ultérieure sera bloquée jusqu'à ce qu'un vidage en cours soit en cours avant de planifier un autre vidage et de quitter. Par conséquent,sync; sync
assure un rinçage synchrone. Vous n'avez pas besoin de le faire plus de 2 fois, ni de le faire entrersleep
dans le mix.la source
Ceux d'entre vous qui nous disent que "sync; sync; sync" n'a aucun but révèlent votre âge.
Au bon vieux temps, avant qu'Unix ne soit quelque chose pour les adolescents, nous devions utiliser TAPE pour nos besoins de streaming / sauvegarde. Souvent, nous montions un système de fichiers sur bande pour diffuser des sauvegardes, etc. Cette seule longue bande mince de bande magnétique en plastique était tout ce que certains d'entre nous avaient, pour stocker nos fichiers sur ..
La commande 'sync; sync; sync' était un moyen de dire à ces vieilles magnétophones de se rembobiner jusqu'à la fin (avant l'arrêt) - elles avaient à bord un micrologiciel qui recevrait la cmd de synchronisation (comme tous les bons systèmes de fichiers faire), et si elle était suivie presque immédiatement par deux autres commandes de tampon de synchronisation, le lecteur de bande lui-même interpréterait cela comme signifiant "rembobiner la bande et la démonter". Il n'y avait aucun moyen de dire au lecteur de bande de rembobiner, au-delà de cette méthode, et il est en quelque sorte bloqué .. Cette habitude est ensuite passée au mot lorsque les disques durs sont devenus plus disponibles - nous, les anciens opérateurs croustillants, ne faisons pas que réallouer ( ) notre mémoire musculaire, vous savez! Je crois qu'il a atteint le statut folklorique peu de temps après que les bandes sont devenues moins courantes et que les disques durs sont devenus plus disponibles, mais il a toujours ses utilisations pour ceux d'entre nous qui ont des lecteurs de bandes.
la source