systemd: Jak sprawdzić zaplanowany czas opóźnionego wyłączenia?

14

shutdown -h TIME/+DELAYCzasami lubię używać . Jednak od czasu przejścia na systemd (na Ubuntu) wydaje się, że sytuacja uległa znacznej zmianie.

Poza tym, że poprzednie polecenie zamknięcia nie uniemożliwia już uruchomienia nowego, nie mogę wymyślić, jak sprawdzić planowany czas zamknięcia bieżącego procesu zamykania.

Po prostu biegłem, ps aux | grep shutdownżeby zobaczyć planowany czas wyłączenia.

Teraz z systemd pokazuje po prostu coś takiego:

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

Jak mogę sprawdzić planowany czas wyłączenia takiego procesu?

Próbowałem shutdown -k, ale zamiast pisać tylko wiadomość na ścianie, wydaje się, że zmienia ona również planowy czas wyłączenia na teraz + 1 minuta.

KIAaze
źródło

Odpowiedzi:

12

man shutdown (8) mówi:

Pierwszym argumentem może być ciąg czasu (zwykle „teraz”).

Ciąg czasu może być w formacie „gg: mm” dla godziny / minut, określającym czas wykonania wyłączenia, określony w formacie zegara 24-godzinnego. Alternatywnie może być w składni „+ m”, odnosząc się do określonej liczby minut m od teraz. „teraz” to alias dla „+0”, tj. do uruchomienia natychmiastowego wyłączenia. Jeśli nie podano argumentu czasu, implikowane jest „+1”.

Próbować:

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

Powinieneś zobaczyć coś takiego:

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

Evgeny Vereshchagin
źródło
Dzięki. To było łatwe. Próbowałem wcześniej „statusu usługi” bez powodzenia. Chyba nie jestem jeszcze przyzwyczajony do wystarczającej ilości systemu.
KIAaze
4
systemd-shutdowndzostał usunięty z systemu w maju 2015 r.
JdeBP
To jest poprawne. Dziękujemy za zwrócenie na to uwagi. Jeśli używany jest nowsza wersja Systemd, to coś jak poniżej powinno wystarczyć: 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 to unikalny znacznik czasu epoki z mikrosekundową precyzją, więc:

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

wyświetli coś takiego:

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

Wersja systemowa to 232-25 + deb9u4 działająca na Debian Stretch.

Delian Krustev
źródło
5

W przypadku nowszych wersji dystrybucji systemu Linux może być konieczne wykonanie:

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

Zmieniła się metoda działania zamykania

Próbowałem: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS

Bibliografia

akarapatis
źródło
2
Dane wyjściowe określają czas zamknięcia w mikrosekundach od epoki Uniksa. Aby uzyskać czas czytelny dla człowieka:date -d @$(( $(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d' ' -f3) / 1000000 ))
200_success
4

Napotkałem to samo pytanie i znalazłem inny sposób na sprawdzenie planu zamknięcia.

Po ustawieniu planu wyłączania ściana wyśle ​​wiadomość do wszystkich zalogowanych z uprawnieniami do przesyłania ustawionymi na tak. Za każdym wywołaniem ściany zostanie zapisane powiadomienie w syslog . Aby przeszukać syslog , możesz uruchomić polecenie journalctl -u systemd-shutdownd, -uopcja może filtrować dziennik według jednostek.

Po uruchomieniu journalctl -u systemd-shutdowndwyświetli się szczegóły zamknięcia, takie jak poniżej:

[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
źródło
1

W systemie Ubuntu 18.04 zamykaniem komputera zarządza systemd. Na moim komputerze włączyłem automatyczne ponowne uruchamianie poprzez nienadzorowane aktualizacje:

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

Zaplanowany automatyczny czas ponownego uruchomienia jest przechowywany w /run/systemd/shutdown/scheduled.

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

Możesz przekonwertować to na czas czytelny dla człowieka za pomocą następującego polecenia:

$ 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
źródło