Todavía veo que la gente recomienda el uso de sync; sync; sync; sleep 30; halt
encantamientos 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 sync
procedimiento antes de desmontar dispositivos extraíbles, y nunca encuentro un problema.
Otro ejemplo: Xen permite que el DomU reciba un shutdown
comando desde el Dom0, esto se considera un "apagado limpio" sin que nadie tenga que iniciar sesión y escribir el mágico sync; sync; sync
primero.
¿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; sync
antes de ahalt
es porque elhalt
comando 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
shutdown
comando en realidad le dice alinit
proceso 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
halt
comando solo llama alshutdown
comando 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
umount
sincronizará los datos con el disco antes de desmontarlo.Si ha estado ejecutando
sync; sync; halt
en Linux, habrá estado de acuerdo con el estado del sistema de archivos porque los desarrolladores se han asegurado de quehalt
haga lo correcto ; sin embargo, sería más correcto usar:shutdown now
fuente
halt
llamadasshutdown
que llamadasumount
que realiza una sincronización.El uso de múltiples
sync
llamadas 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 30
está más acorde con lo que se pretendía.fuente
Puedo solamente hablar de por qué usted debe ejecutar
sync
varias veces. El comando programa el vaciado al disco pero regresa antes de que se complete el vaciado real. Cualquiersync
comando posterior se bloqueará hasta que esté en progreso cualquier descarga pendiente antes de programar otra descarga y salir. Por lo tanto,sync; sync
asegura un lavado sincrónico. No necesita hacerlo más de 2 veces, ni incorporarlosleep
a 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