systemd: come controllare l'orario programmato di un arresto ritardato?


14

Mi piace usare a shutdown -h TIME/+DELAYvolte. Tuttavia, dal passaggio a systemd (su Ubuntu), le cose sembrano essere cambiate un po '.

A parte il fatto che un precedente comando di arresto non impedisce più di eseguirne uno nuovo, non riesco a capire come controllare il tempo di spegnimento pianificato di un processo di spegnimento corrente.

Ero solito correre ps aux | grep shutdownper vedere il tempo di spegnimento pianificato.

Ora con systemd mostra solo qualcosa del genere:

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

Come posso controllare il tempo di spegnimento programmato di tale processo?

Ho provato shutdown -k, ma invece di scrivere solo un messaggio a muro, sembra anche cambiare il tempo di spegnimento programmato a ora + 1 minuto.

Risposte:


12

man shutdown (8) dice:

Il primo argomento può essere una stringa temporale (che di solito è "ora").

La stringa oraria può essere nel formato "hh: mm" per ora / minuti specificando l'ora in cui eseguire l'arresto, specificata nel formato 24 ore. In alternativa, potrebbe essere nella sintassi "+ m" in riferimento al numero di minuti specificato m da adesso. "now" è un alias per "+0", ovvero per innescare un arresto immediato. Se non viene specificato alcun argomento time, è implicito "+1".

Provare:

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

Dovresti vedere qualcosa del genere:

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


Grazie. È stato facile. Ho provato "lo stato del servizio" senza successo prima. Immagino di non essere ancora abbastanza abituato a sistemare.
KIAaze,

4
systemd-shutdowndè stato rimosso da systemd nel maggio 2015.
JdeBP,

È corretto. Grazie per averlo precisato. Se si utilizza una versione più recente di systemd, quindi qualcosa di simile alla seguente dovrebbe essere sufficiente: 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

USEC è un timestamp di epoca unix con precisione in microsecondi, quindi:

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

mostrerà qualcosa del tipo:

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

La versione di Systemd è 232-25 + deb9u4 in esecuzione su Debian Stretch.


5

Per le versioni più recenti delle distribuzioni di Linux potresti dover fare:

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

Il metodo di funzionamento dell'arresto è cambiato

Ho provato: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS

Riferimenti


2
L'output specifica il tempo di spegnimento in microsecondi dall'epoca di Unix. Per ottenere un tempo leggibile dall'uomo:date -d @$(( $(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d' ' -f3) / 1000000 ))
200_successo

4

Ho riscontrato la stessa domanda e ho trovato un altro modo per controllare il piano di spegnimento.

Quando imposti un piano di spegnimento, wall invierà un messaggio a tutti coloro che hanno effettuato l'accesso con la loro autorizzazione mesg impostata su yes. Per ogni invocazione del muro verrà inviata una notifica a syslog . Per cercare nel syslog , è possibile eseguire il comando journalctl -u systemd-shutdownd, il-u opzione potrebbe filtrare il registro per unità.

Quando corri journalctl -u systemd-shutdownd, mostrerà i dettagli di spegnimento come di seguito:

[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)...

1

Su una macchina Ubuntu 18.04 l'arresto è gestito da systemd. Sul mio computer ho abilitato i riavvii automatici tramite aggiornamenti automatici:

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

Il tempo di riavvio automatico programmato è memorizzato in /run/systemd/shutdown/scheduled.

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

Puoi convertirlo in un tempo leggibile dall'uomo usando il seguente 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.