LPIC-1 101.3: comandos reboot y shutdown

Segunda parte del Tema 101.3 de la serie de tutoriales para las certificaciones LPIC-1. Toca describir algunas características de SysV y systemd relacionadas con los procesos de apagado y reinicio del sistema. También algo sobre el sistema de gestión de energía ACPID y los comandos wall, reboot y shutdown. Es importante conocer detalles para terminar los procesos de forma adecuada cuando intentamos detener el sistema, saber alertar a los usuarios, etc.

Con este tutorial termino la serie LPIC-1 101.x y en los próximos sobre LPI pasamos directamente a los temas dentro del apartado 102.

Regreso al futuro: un poco de historia

Nos montamos en el DeLorean y nos vamos a los 80s. En aquella época, BSD usaba tanto halt, como reboot y shutdown, los dos primeros comandos eran de bajo nivel. En UNIX SystemV no se usaban esos tres, simplemente se usaba un shutdown nativo ligeramente diferente al de BSD.

Algunas variantes como XENIX de SCO implementaron comandos similares a los de BSD como haltsys. Miquel van Smoorenburg escribió unas herramientas SystemV init para Linux con sus propias implementaciones sobre estos comandos, aunque no eran exactamente como las originales. De hecho, han crecido en número con la inclusión de poweroff. Por tanto, muchos detalles que diferencian unos de otros…

Por otro lado, si usas sistemas de gestión de servicios para el arranque como systemd, Upstart, etc., cada uno de ellos tendrá implementaciones propias de estos comandos. Aunque la sintaxis sea igual y el usuario no aprecie diferencias, no son iguales. Por ejemplo, en systemd, tanto halt, como poweroff, reboot, telinit y shutdown son en realidad uno solo, ya que son alias de systemctl con diferentes opciones. Algo similar ocurre en Upstart, todos son uno, que difiere con los sistemas *BSD que siguen manteniendo relación directa con las herramientas clásicas del pasado.

Comandos

Los comandos más importantes que debes controlar son:

shutdown

Uno de los comandos más importantes es shutdown, para detener o reiniciar el sistema, e incluso enviar mensajes a los usuarios. Por supuesto necesita privilegios para que funcione. Si lo usas sin opciones, hará que el sistema entre en modo single-user. Pero es más frecuente usarlo con opciones, como la opción -h para apagar, -c para cancelar una orden previa, -k para solo enviar advertencias sin apagar, -r para reiniciar, -H para halt, -P para poweroff, etc.

También puedes usar tras las opciones un determinado tiempo para programar la acción. El formato debe ser h:m o hh:mm, donde h son las horas y m los minutos. También puedes usar +m sustituyendo m por un número de minutos tras los que quieres ejecutar la acción. También existe la opción now (equivale a +0) para que sea inmediato…

Tras las opciones y los parámetros temporales también podrías incluir un mensaje que quieras que se pase a los usuarios para que sepan que se va a apagar la máquina…

Por ejemplo, puedes reiniciar el sistema inmediatamente, reiniciar el sistema tras 15 minutos y mostrar un mensaje, programar el reinicio para las nueve, y anular alguna orden previa programada respectivamente:

shutdown -r now
shutdown -r +15 ¡El sistema se reiniciará!
shutdown -P 21:00
shutdown -c

reboot

El comando reboot sirve para reiniciar el sistema si tienes privilegios para manejarlo. Es una orden simple y rápida, aunque lo hace deteniendo adecuadamente los procesos, sincronizando los discos para no perder datos que se estuvieran escribiendo en el momento y dejar corruptos algunos ficheros o perder datos, y registra el reinicio en /var/log/wtemp. Tras eso reiniciará el sistema.

Estos dos comandos serían equivalentes:

shutdown -r now
reboot

Pero si lo usas con la opción -f lo hará de forma brusca, se fuerza el reinicio sin detener los procesos de forma segura, sin sincronizar, etc. Por ejemplo:

reboot -f

Otras opciones comunes son: -d para evitar el registro en wtmp: -w no reinicia ni detiene, solo registra en wtmp la entrada como si se hiciese; -h para dejar los discos duros en espera antes de proceder a la acción; -n para evitar la sincronización; -i apaga las interfaces de red; etc.

Estas opciones funcionan también en halt y poweroff.

halt

El comando halt es similar al anterior, solo que detiene el sistema, es decir, concluye toda actividad. Estos comandos serían equivalentes (de hecho en Linux son alias):

halt
shutdown -H now

Recuerda que necesita privilegios. En este caso, también detiene los proceso adecuadamente, sincroniza los discos, graba en el fichero wtemp y desmota los sistemas de archivos y para la actividad de la CPU. El equipo quedaría en una especie de standby inducido…

poweroff

Al igual que los dos anteriores, y a diferencia de shutdown, es muy específico. En este caso para o apaga el sistema. Estos dos comandos serían equivalentes:

poweroff
shutdown -P now

Es muy parecido a halt, solo que en este caso envía una señal ACPI para detener la placa base y cesar la alimentación de la PSU. Ya no es un standby…

Por tanto, los tres últimos comandos tienen varias similitudes. Una de ellas es hacer uso de la llamada al sistema o syscall reboot(), que a pesar de su nombre cumple las tres funciones.

wall

No es un comando muy frecuente o tan frecuente como los anteriores, pero es interesante. Sirve para enviar un mensaje a todos los usuarios. Muy útil para el administrador cuando necesita hacer tareas de mantenimiento y necesita comunicarlo a los usuarios para que tomen medidas, como guardar lo que están haciendo y prepararse para reinicios, etc.

Ejemplo de uso sería usarlo sin opciones, y en ese caso se abre un prompt o sistema interactivo que te permite teclear el mensaje que quieras pasar y pulsar varias veces Ctrl+D para salir de él:

wall
>Hola a todos, este es un mensaje del administrador. El sistema se reiniciará a las 7:00 por tareas de mantenimiento...

Eso produciría un mensaje similar al siguiente en la consola de los usuarios conectados:

Broadcast message from root@localhost.localdomain (pts/0) (Frid Jun 05
11:37:5 Hola a todos, este es un mensaje del administrador. El sistema se reiniciará a las 7:00 por tareas de mantenimiento...

Recuerda usar man para obtener más información, opciones y parámetros de cada uno de ellos. ¡Practica!

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar