Ainda vejo pessoas recomendando o uso de sync; sync; sync; sleep 30; haltencantamentos 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 syncprocedimento antes de desmontar dispositivos removíveis e nunca encontro um problema.
Outro exemplo - o Xen permite que o DomU receba um shutdowncomando do Dom0, isso é considerado um "desligamento limpo" sem que ninguém precise fazer login e digitar o mágico sync; sync; syncprimeiro.
Estou certo ou tive a sorte de alguns milhares de desligamentos do sistema?