systemd: Comment vérifier l'heure planifiée d'un arrêt différé?

14

J'aime utiliser shutdown -h TIME/+DELAYparfois. Cependant, depuis le passage à systemd (sur Ubuntu), les choses semblent avoir beaucoup changé.

Outre le fait qu'une commande d'arrêt précédente n'empêche plus d'en exécuter une nouvelle, je ne peux pas comprendre comment vérifier l'heure d'arrêt planifiée d'un processus d'arrêt en cours.

Je courais juste ps aux | grep shutdownpour voir l'heure d'arrêt prévue.

Maintenant, avec systemd, il montre juste quelque chose comme ceci:

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

Comment puis-je vérifier l'heure d'arrêt programmé d'un tel processus?

J'ai essayé shutdown -k, mais au lieu d'écrire uniquement un message sur le mur, il semble également changer l'heure d'arrêt planifiée à maintenant + 1 minute.

KIAaze
la source

Réponses:

12

arrêt de l'homme (8) dit:

Le premier argument peut être une chaîne temporelle (qui est généralement "maintenant").

La chaîne d'heure peut être au format "hh: mm" pour les heures / minutes spécifiant l'heure à laquelle exécuter l'arrêt, spécifiée au format d'horloge 24h. Alternativement, il peut être dans la syntaxe "+ m" se référant au nombre spécifié de minutes m à partir de maintenant. "now" est un alias pour "+0", c'est-à-dire pour déclencher un arrêt immédiat. Si aucun argument de temps n'est spécifié, "+1" est implicite.

Essayer:

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

Vous devriez voir quelque chose comme ceci:

● 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 est Shutting down at Tue 2015-09-15 09:18:11 UTC (poweroff)...

Evgeny Vereshchagin
la source
Merci. C'était facile. J'ai essayé le "statut du service" sans succès auparavant. Je suppose que je ne suis pas encore assez habitué au système.
KIAaze du
4
systemd-shutdownda été supprimé de systemd en mai 2015.
JdeBP
C'est correct. Je vous remercie de le faire remarquer. Si une version plus récente de systemd est utilisé, alors quelque chose comme ce qui suit devrait suffire: 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

L'USEC est un horodatage d'époque Unix avec une précision en microsecondes, donc:

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

affichera quelque chose comme:

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

La version Systemd est 232-25 + deb9u4 fonctionnant sur Debian Stretch.

Delian Krustev
la source
5

Pour les versions de distributions Linux plus récentes, vous devrez peut-être:

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

La méthode de fonctionnement de l'arrêt a changé

Testé sur: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS

Les références

akarapatis
la source
2
La sortie spécifie le temps d'arrêt en microsecondes depuis l'époque Unix. Pour obtenir une heure lisible par l'homme:date -d @$(( $(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d' ' -f3) / 1000000 ))
200_success
4

J'ai rencontré la même question et trouvé un autre moyen de vérifier le plan d'arrêt.

Lorsque vous définissez un plan d'arrêt, wall enverra un message à toutes les personnes connectées avec leur autorisation de mesg définie sur oui. Pour chaque invocation de mur, une notification sera écrite dans syslog . Pour rechercher le syslog , vous pouvez exécuter la commande journalctl -u systemd-shutdownd, l' -uoption peut filtrer le journal par unité.

Lorsque vous exécutez journalctl -u systemd-shutdownd, il affichera les détails de l'arrêt comme ci-dessous:

[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
la source
1

Sur un Ubuntu 18.04, l'arrêt de la machine est géré par systemd. Sur ma machine, j'ai activé les redémarrages automatiques via des mises à niveau sans assistance:

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

L'heure de redémarrage automatique planifiée est stockée dans /run/systemd/shutdown/scheduled.

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

Vous pouvez le convertir en une heure lisible par l'homme à l'aide de la commande suivante:

$ 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
la source