systemd: ¿Cómo verificar la hora programada de un apagado retrasado?

14

Me gusta usar a shutdown -h TIME/+DELAYveces. Sin embargo, desde el cambio a systemd (en Ubuntu), las cosas parecen haber cambiado bastante.

Además del hecho de que un comando de apagado anterior ya no impide ejecutar uno nuevo, no puedo entender cómo verificar el tiempo de apagado planificado de un proceso de apagado actual.

Solía ​​correr ps aux | grep shutdownpara ver el tiempo de apagado planificado.

Ahora con systemd solo muestra algo como esto:

root      5863  0.0  0.0  13300  1988 ?        Ss   09:04   0:00 /lib/systemd/systemd-shutdownd

¿Cómo puedo verificar el tiempo de apagado programado de dicho proceso?

Lo intenté shutdown -k, pero en lugar de solo escribir un mensaje en el muro, parece que también cambia el tiempo de apagado programado a ahora + 1 minuto.

KIAaze
fuente

Respuestas:

12

hombre apagado (8) dice:

El primer argumento puede ser una cadena de tiempo (que generalmente es "ahora").

La cadena de tiempo puede estar en el formato "hh: mm" por hora / minutos especificando la hora a la que se ejecutará el apagado, especificado en formato de reloj de 24 h. Alternativamente, puede estar en la sintaxis "+ m" que se refiere al número especificado de minutos m a partir de ahora. "ahora" es un alias para "+0", es decir, para activar un apagado inmediato. Si no se especifica ningún argumento de tiempo, se implica "+1".

Tratar:

# shutdown +5
# systemctl status systemd-shutdownd.service

Debería ver algo como esto:

● systemd-shutdownd.service - Delayed Shutdown Service
Loaded: loaded (/lib/systemd/system/systemd-shutdownd.service; static; vendor preset: enabled)
Active: active (running) since Tue 2015-09-15 09:13:11 UTC; 12s ago
Docs: man:systemd-shutdownd.service(8)
Main PID: 965 (systemd-shutdow)
Status: "Shutting down at Tue 2015-09-15 09:18:11 UTC (poweroff)..."
CGroup: /system.slice/systemd-shutdownd.service
       └─965 /lib/systemd/systemd-shutdownd

Status es Shutting down at Tue 2015-09-15 09:18:11 UTC (poweroff)...

Evgeny Vereshchagin
fuente
Gracias. Eso fue fácil. Intenté "estado de servicio" sin éxito antes. Supongo que todavía no estoy acostumbrado a systemd lo suficiente.
KIAaze
44
systemd-shutdowndfue eliminado de systemd en mayo de 2015.
JdeBP
Eso es correcto. Gracias por señalarlo. Si se utiliza una versión más reciente de systemd, entonces algo parecido a lo siguiente debería ser suficiente: USECS=$(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d ' ' -f 3); SECS=$((USECS / 1000000)); date --date=@$SECS.
Evgeny Vereshchagin
9
# cat /run/systemd/shutdown/scheduled
USEC=1537242600000000
WARN_WALL=1
MODE=poweroff

El USEC es una marca de tiempo de época unix con precisión de microsegundos, por lo que:

if [ -f /run/systemd/shutdown/scheduled ]; then
  perl -wne 'm/^USEC=(\d+)\d{6}$/ and printf("Shutting down at: %s\n", scalar localtime $1)' < /run/systemd/shutdown/scheduled
fi

mostrará algo como:

Shutting down at: Tue Sep 18 03:50:00 2018

La versión de Systemd es 232-25 + deb9u4 ejecutándose en Debian Stretch.

Delian Krustev
fuente
5

Para versiones más recientes de distribuciones de Linux, es posible que deba hacer:

busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown

El método de cómo funciona el apagado ha cambiado

Probado: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS

Referencias

akarapatis
fuente
2
La salida especifica el tiempo de apagado en microsegundos desde la época de Unix. Para obtener un horario legible para humanos:date -d @$(( $(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d' ' -f3) / 1000000 ))
200_success
4

Encontré la misma pregunta y encontré otra forma de verificar el plan de apagado.

Cuando configura un plan de apagado, el muro enviará un mensaje a todos los que hayan iniciado sesión con su permiso de mensajes configurado en sí. Por cada invocación de muro se escribirá una notificación en syslog . Para buscar en el syslog , podría ejecutar el comando journalctl -u systemd-shutdownd, el-u opción podría filtrar el registro a la unidad.

Cuando corras journalctl -u systemd-shutdownd, mostrará los detalles de apagado como a continuación:

[root@dev log]# journalctl -u systemd-shutdownd
-- Logs begin at Mon 2017-06-12 09:39:34 CST, end at Mon 2017-06-12 14:05:04 CST. --
Jun 12 09:39:50 dev.local systemd[1]: Started Delayed Shutdown Service.
Jun 12 09:39:50 dev.local systemd[1]: Starting Delayed Shutdown Service...
Jun 12 09:39:50 dev.local systemd-shutdownd[1249]: Shutting down at Mon 2017-06-12 21:00:00 CST (poweroff)...
Jun 12 09:55:59 dev.local systemd-shutdownd[1249]: Shutdown canceled.
Jun 12 09:56:07 dev.local systemd[1]: Started Delayed Shutdown Service.
Jun 12 09:56:07 dev.local systemd[1]: Starting Delayed Shutdown Service...
Jun 12 09:56:07 dev.local systemd-shutdownd[2885]: Shutdown canceled.
Jun 12 11:54:15 dev.local systemd[1]: Started Delayed Shutdown Service.
Jun 12 11:54:15 dev.local systemd[1]: Starting Delayed Shutdown Service...
Jun 12 11:54:15 dev.local systemd-shutdownd[3178]: Shutting down at Mon 2017-06-12 20:00:00 CST (poweroff)...
Key Shang
fuente
1

En una máquina Ubuntu 18.04, el apagado de la máquina es administrado por systemd. En mi máquina, he habilitado los reinicios automáticos mediante actualizaciones desatendidas:

$ grep Automatic-Reboot /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

El tiempo de reinicio automático programado se almacena en /run/systemd/shutdown/scheduled.

$ cat /run/systemd/shutdown/scheduled
USEC=1563976800000000 
WARN_WALL=1
MODE=reboot

Puede convertir esto en un tiempo legible para humanos con el siguiente comando:

$ date -d "@$( awk -F '=' '/USEC/{ $2=substr($2,1,10); print $2 }' /run/systemd/shutdown/scheduled )"
Thu Jul 25 02:00:00 NZST 2019
htaccess
fuente