Todavía veo que la gente recomienda el uso de sync; sync; sync; sleep 30; haltencantamientos cuando se habla de apagar o reiniciar Linux.
He estado ejecutando Linux desde su inicio y, aunque este fue el procedimiento recomendado en el BSD 4.2 / 4.3 y SunOS 4 días, no recuerdo que tuve que hacerlo durante al menos los últimos diez años, durante los cuales probablemente pasó por el apagado / reinicio de Linux tal vez miles de veces.
Sospecho que esto es un anacronismo desde los días en que el núcleo no podía desmontar y sincronizar el sistema de archivos raíz y otros sistemas de archivos críticos necesarios incluso durante el modo de usuario único (por ejemplo, / tmp), y por lo tanto, era necesario decirle explícitamente que se vacíe tantos datos como sea posible al disco.
En estos días, sin encontrar todavía el código relevante en la fuente del kernel (buscando en http://lxr.linux.no y google), sospecho que el kernel es lo suficientemente inteligente como para desmontar limpiamente incluso el sistema de archivos raíz y el sistema de archivos es lo suficientemente inteligente hacer una sincronización efectiva (2) antes de desmontarse durante una shutdown/ reboot/ normal poweorff.
Esto "sync; sync; sync"solo es necesario en casos extremos donde el sistema de archivos no se desmontará limpiamente (por ejemplo, falla del disco físico) o el sistema está en un estado que solo forzando un reinicio directo (8) lo sacará de su congelamiento (por ejemplo, la carga también alto para permitirle programar el comando de apagado).
Tampoco hago el syncprocedimiento antes de desmontar dispositivos extraíbles, y nunca encuentro un problema.
Otro ejemplo: Xen permite que el DomU reciba un shutdowncomando desde el Dom0, esto se considera un "apagado limpio" sin que nadie tenga que iniciar sesión y escribir el mágico sync; sync; syncprimero.
¿Tengo razón o tuve la suerte de algunos miles de paradas del sistema?
fuente

Respuestas:
La razón por la que la gente correría
sync; syncantes de ahaltes porque elhaltcomando no apaga el sistema limpiamente en linuxes más antiguos. La forma correcta de hacer esto en los sistemas SYSVr4 siempre ha sido decirle a init que se mueva a un nivel de ejecución diferente.BSD y SunOS 4 no son sistemas operativos SYSVr4, por eso difieren. Solaris (SunOS 5) es SYSVr4 y Linux selecciona los bits del estándar SYSVr4 que quiere usar.
El uso de detener es en realidad una forma bastante mala de hacerlo en la mayoría de UNIX (Linux es una de las excepciones) ya que en realidad no se ejecuta a través de los scripts de inicio para realizar cosas como detener procesos y desmontar discos, solo detiene el procesador.
Si se puede garantizar que usted no nunca, nunca utilizar cualquier tipo de sistema UNIX a Linux, puede seguir usando
halt- si hay una posibilidad de que usted va a utilizar otros Unix, te recomiendo entrar en el hábito de usarinit _runlevel_oshutdown.El
shutdowncomando en realidad le dice alinitproceso que cambie su nivel de ejecución : al hacerlo, init luego procede a ejecutar cada uno de los scripts de inicio K * y S * init asociados con ese nivel de ejecución. Uno de los scripts en el nivel de ejecución 0 realiza el desmontaje de los sistemas de archivos.En Linux, el
haltcomando solo llama alshutdowncomando a menos que el nivel de ejecución ya sea 0 (apagado) o 6 (reinicio) de todos modos ; Así que no hay pérdida allí.El acto de desmontar un sistema de archivos usando
umountsincronizará los datos con el disco antes de desmontarlo.Si ha estado ejecutando
sync; sync; halten Linux, habrá estado de acuerdo con el estado del sistema de archivos porque los desarrolladores se han asegurado de quehalthaga lo correcto ; sin embargo, sería más correcto usar:shutdown nowfuente
haltllamadasshutdownque llamadasumountque realiza una sincronización.El uso de múltiples
syncllamadas fue para permitir que el sistema operativo y los discos tengan tiempo para vaciar las colas de escritura."sync; sync; sync"no fue considerado tan útil; uno lo hizo"sync<cr> sync<cr> sync<cr"y el retraso mientras su ASR-33 hizo el retorno de carro / nueva línea proporcionó suficiente retraso. La detención siempre llamaba a la sincronización; la pregunta era si habría suficiente tiempo para eliminar las colas antes de que se cortara el poder.El póster original
sync; sleep 30está más acorde con lo que se pretendía.fuente
Puedo solamente hablar de por qué usted debe ejecutar
syncvarias veces. El comando programa el vaciado al disco pero regresa antes de que se complete el vaciado real. Cualquiersynccomando posterior se bloqueará hasta que esté en progreso cualquier descarga pendiente antes de programar otra descarga y salir. Por lo tanto,sync; syncasegura un lavado sincrónico. No necesita hacerlo más de 2 veces, ni incorporarlosleepa la mezcla.fuente
Aquellos de ustedes que nos dicen todo lo que "sincronizar; sincronizar; sincronizar" no tiene ningún propósito revelan su edad.
En los viejos tiempos, antes de que Unix fuera algo para adolescentes, solíamos tener que usar TAPE para nuestras necesidades de transmisión / respaldo. Muchas veces, montamos un sistema de archivos basado en cinta para transmitir copias de seguridad, etc. Esta banda larga y delgada de cinta magnética de plástico era todo lo que algunos de nosotros teníamos para almacenar nuestros archivos ...
El comando 'sync; sync; sync' era una forma en que se podía decir a estas viejas máquinas de cinta que se rebobinaran hasta el final (antes del apagado): tenían firmware incorporado que recibiría el cmd de sincronización (como todos los buenos sistemas de archivos) hacer), y si fue seguido casi de inmediato por otros dos comandos de búfer de sincronización, la propia unidad de cinta interpretaría que esto significa "rebobinar la cinta y desmontarla". No había ninguna manera de decirle a la unidad de cinta que se rebobinara, más allá de este método, y se quedó atascado. Este hábito pasó a la palabra cuando los discos duros estuvieron más disponibles: los viejos operadores no solo realloc ( ) nuestra memoria muscular ya sabes! Creo que alcanzó el estatus de folklore poco después de que las cintas se volvieran menos comunes y los discos duros se volvieran más disponibles, pero aún tiene sus usos para aquellos de nosotros con unidades de cinta.
fuente