at 18:00 shutdown now
y shutdown 18:00
, ¿están comenzando el mismo servicio? ¿Funcionan de la misma manera?
at 18:00 shutdown now
crea un trabajo "at", que se realiza en el momento especificado por el at
demonio o tal vez el cron
demonio, dependiendo de su sistema.
shutdown 18:00
inicia un proceso en su shell que espera hasta el tiempo especificado y luego realiza el apagado. Este comando se puede terminar si, por ejemplo, se termina su sesión de shell.
El resultado neto en la mayoría de los casos será el mismo: el sistema se apaga a las 18:00.
Una diferencia es que si usa at
, el trabajo se almacenará y si el sistema se apaga por algún otro medio antes de las 18:00, al reiniciar nuevamente, el trabajo aún estará esperando para ejecutarse; Si ya pasó el tiempo, el apagado se realizará de inmediato, lo que podría ser bastante inesperado.
Otra diferencia es que shutdown 18:00
creará un /run/nologin
archivo 5 minutos antes de la hora programada para evitar que las personas inicien sesión después de ese momento. También se enviarán mensajes de difusión para advertir a los usuarios registrados que el sistema está a punto de cerrarse.
Debe tener en cuenta estas diferencias para decidir cuál usar.
shutdown 18:00
comienza un proceso en su shell que espera". ¿Qué pasa si cierras sesión antes?nohup
odisown
lo que sea, si cerrar la sesión normalmente mata a ejecutar procesos en segundo plano. Los diferentes sistemas pueden tener diferentes valores predeterminados para eso. (Supongo que realmentesudo shutdown
todavía hay un proceso en ejecución, más bien solo indicainit
que se inicie un temporizador de apagado. Esto último podría ser lo que sucede, pero no lo he comprobado recientemente. Oh, pero @JdeBP sí; vea esa respuesta )at
para que funcione a través de encron
lugar deatd
?Y ahora, la respuesta del sistema.
Si tiene CentOS 7, tiene un sistema operativo systemd y la respuesta es diferente.
at 18:00 shutdown now
todavía se programa a través delat
subsistema, pero eseshutdown
comando, así como el que invocas directamenteshutdown 18:00
, es diferente. En realidad es elsystemctl
programa de systemd .systemctl
hace las cosas de manera diferente.En primer lugar,
systemctl
envía la solicitud de apagado programada para que sea procesada por un demonio, como en elat
caso. Sin embargo, este es un demonio systemd, específicamentelogind
(elsystemd-shutdownd
demonio se eliminó de systemd en mayo de 2015, cuyo cambio se ha filtrado desde entonces a versiones menores posteriores de CentOS 7), no elat
subsistema.systemctl
habla un protocolo interno a un intermediario de Desktop Bus (en todo el sistema) con el que a su vez se comunicalogind
.Entonces, como en el
at
caso, no hay ningúnshutdown
proceso allí sentado, contando y generando loswall
mensajes. Por lo tanto, uno puede cerrar sesión y esto no afectará el cronograma, y cancelar no es tan simple como simplemente interrumpir / matar el proceso en primer plano de la sesión de inicio de sesión. Al igual que conat
.Todavía hay mensajes, a diferencia del
at
caso, pero son emitidos porlogind
. Además, a diferencia delat
caso, el trabajo programado no persiste en los reinicios del sistema, por lo que un apagado real cancela uno programado. No es un archivo en el sistema de archivos, pero está bajo/run/systemd/shutdown
el que almacenar de forma no persistente.Las diferencias adicionales son que solo puede haber un apagado programado a la vez, mientras que uno puede enviar múltiples
at
trabajos, y Policy Kit aplicará reglas parashutdown
ejecutarse en un contexto de sesión sin inicio de sesión como unat
trabajo diferente a las reglas aplicadas parashutdown
ejecutarse en contexto de sesión de inicio de sesión. Este último podría ser más permisivo, permitiendo (por ejemplo) que un usuario no privilegiado que haya iniciado sesión en la sesión de inicio de sesión activa cierre el sistema.Otras lecturas
fuente