Ainda vejo pessoas recomendando o uso de sync; sync; sync; sleep 30; halt
encantamentos quando se fala em desligar ou reiniciar o Linux.
Estou executando o Linux desde o seu início e, embora esse tenha sido o procedimento recomendado nos dias BSD 4.2 / 4.3 e SunOS 4, não me lembro de ter feito isso pelo menos nos últimos dez anos, durante os quais provavelmente passou pelo desligamento / reinicialização do Linux talvez milhares de vezes.
Eu suspeito que isso seja um anacronismo desde os dias em que o kernel não conseguiu desmontar e sincronizar o sistema de arquivos raiz e outros sistemas de arquivos críticos necessários, mesmo durante o modo de usuário único (por exemplo, / tmp), e, portanto, era necessário dizer explicitamente para liberar o máximo de dados possível para o disco.
Hoje em dia, sem encontrar o código relevante na fonte do kernel (pesquisando em http://lxr.linux.no e google), suspeito que o kernel seja inteligente o suficiente para desmontar até o sistema de arquivos raiz e o sistema de arquivos é inteligente o suficiente efetivamente fazer uma sincronização (2) antes de desmontar-se durante um shutdown
/ reboot
/ normal poweorff
.
A "sync; sync; sync"
só é necessário em casos extremos, onde o sistema de arquivos não vai desmontar limpa (por exemplo, falha de disco físico) ou o sistema está em um estado que só forçando um reboot direta (8) irá tirá-lo do seu congelamento (por exemplo, a carga é muito alto para permitir agendar o comando shutdown).
Também nunca faço o sync
procedimento antes de desmontar dispositivos removíveis e nunca encontro um problema.
Outro exemplo - o Xen permite que o DomU receba um shutdown
comando do Dom0, isso é considerado um "desligamento limpo" sem que ninguém precise fazer login e digitar o mágico sync; sync; sync
primeiro.
Estou certo ou tive a sorte de alguns milhares de desligamentos do sistema?