Más acerca de shutdown

Es sumamente importante comprender y seguir los pasos correctos al momento de finalizar un sistema Linux. Si no realiza este procedimiento, sus sistemas de archivos se verán probablemente perjudicados y los archivos pueden quedar desordenados. Esto sucede porque Linux tiene un cache de disco que no escribe a disco cada vez que se le solicita, sino que solamente lo hace a intervalos. Esta manera de proceder mejora de manera significativa el desempeño del sistema, pero al mismo tiempo significa que si se apaga el equipo de imprevisto puede perder información que debería estar en sus sistemas de archivos (y obviamente en sus discos). Esto último sucede porque la cache puede contener una gran cantidad de datos que se pierden con el apagado, y lo que está en el disco puede no ser un sistema de archivos totalmente funcional (debido a que solamente parte de la información ha sido transcrita de la cache al disco duro).

Una razón adicional para no desconectar directamente el sistema de la energía (presionando por ej. el botón de apagado) es que en un ambiente multitarea existen diversos procesos que se están ejecutando en segundo plano, y desconectar la computadora en este momento puede ser desastroso. Utilizando el procedimiento correcto para el apagado del equipo garantiza que todos los procesos en segundo plano puedan guardar sus datos.

El comando para finalizar correctamente un sistema Linux es shutdown. Se utiliza generalmente de una de dos maneras diferentes:

Si Ud. es el único usuario del sistema, debe finalizar todos los programas que estén en ejecución, finalizar todas las sesiones (log out) de todas las consolas virtuales, e iniciar una sesión como usuario root (o mantener la sesión si ya existe una, pero debe cambiar de directorio de trabajo al directorio HOME de root, para evitar problemas al desmontarse los sistemas de archivos). Finalmente ejecute el comando shutdown -h now. Si desea postergar durante algún lapso el comando shutdown, reemplace now con un signo + (mas) y un numero que indica minutos de espera.

Alternativamente, si el sistema está siendo utilizado por muchos usuarios, utilice el comando shutdown -h +time mensaje, donde time es el numero de minutos en que se posterga la detención del sistema, y el mensaje es una explicación breve de el porqué se está apagando el sistema. # shutdown -h +10 'We will install a new disk. System should > be back on-line in three hours.' # El ejemplo advierte a todos los usuarios que el sistema se apagará en diez minutos, y que sería mejor que se desconectaran o se arriesgan a perder la información con la que están trabajando. La advertencia se muestra en cada terminal donde existe un usuario conectado, incluyendo las xterm (emuladores de terminales para el sistema X Window).


 Broadcast message from root (ttyp0) Wed Aug  2 01:03:25 1995...


We will install a new disk.  System should be back on-line in three hours.  The
system is going DOWN for system halt in 10 minutes !!  

El mensaje de advertencia (warning) se repite automáticamente varias veces antes de pagar la máquina con intervalos cada vez más frecuentes.

Después del tiempo de postergación, cuando el proceso de apagado real empieza, se desmontan todos los sistemas de archivos (excepto el sistema de archivos raíz /), se finalizan (kill) los procesos de los usuarios (si existen aún usuarios dentro del sistema), los demonios y finalmente se desmonta el sistema de archivos raíz. Cuando todo este proceso finaliza, INIT muestra un mensaje indicando que se puede apagar la máquina. Es entonces y sólo entonces que es posible bajar el switch (o interruptor de suministro eléctrico).

Algunas veces, aunque es raro en un buen sistema, es imposible concluir el sistema de forma adecuada. Por ejemplo, si ocurre un error fatal con el kernel, puede ser imposible ejecutar cualquier comando nuevo, haciendo la finalización normal del sistema inviable. Todo lo que se puede hacer en este caso es esperar que ningún daño severo ocurra y entonces desconectar la máquina. Si los problemas son menos serios (digamos, alguien quebró su teclado con un hacha!), y el kernel y el programa update se encuentran en ejecución normal, es aconsejable aguardar algunos minutos para que update tenga la chance de actualizar los discos con la información contenida en el buffer caché, y solamente después desconectar el equipo.

A algunas personas les gusta apagar el equipo tecleando el comando sync [25] tres veces, dando tiempo a que finalice la entrada y la salida del disco duro y entonces apagar el equipo. Si no hay programas en ejecución, este método es similar a utilizar el comando shutdown. Sin embargo, este procedimiento no desmonta los sistemas de archivos y puede acarrear problemas con la marca de "limpio" que algunos sistemas de archivos utilizan (“filesystem clean flag”), como por ejemplo ext2. El método del triple sync no es recomendable.

Por pura curiosidad: la razón del triple sync viene de los días en que UNIX era joven, cuando los comandos fueron tipeados separadamente, y eso daba usualmente tiempo suficiente para que la entrada/salida a disco finalizara.



[25] sync vacía el buffer caché