systemd: Як перевірити запланований час затримки відключення?


14

Мені подобається shutdown -h TIME/+DELAYіноді користуватися. Однак, з часу переходу на systemd (на Ubuntu), здається, щось змінилося досить сильно.

Крім того, що попередня команда відключення більше не перешкоджає запуску нової, я не можу зрозуміти, як перевірити запланований час зупинки поточного процесу відключення.

Я раніше просто бігав, ps aux | grep shutdownщоб побачити запланований час відключення.

Тепер із системою він просто показує щось подібне:

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

Як я можу перевірити запланований час відключення такого процесу?

Я спробував shutdown -k, але замість того, щоб писати лише стінне повідомлення, схоже, він також змінив запланований час відключення до теперішнього + 1 хвилина.

Відповіді:


12

людина відключення (8) говорить:

Першим аргументом може бути часовий рядок (який, як правило, "зараз").

Рядок часу може бути або у форматі "hh: mm" протягом години / хвилини, вказуючи час виконання відключення при, визначеному у 24-годинному форматі годинника. Крім того, це може бути в синтаксисі "+ m", що відноситься до визначеної кількості хвилин m відтепер. "now" - псевдонім для "+0", тобто для запуску негайного відключення. Якщо аргумент часу не вказано, мається на увазі "+1".

Спробуйте:

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

Ви повинні побачити щось подібне:

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


Спасибі. Це було легко. Я раніше пробував "статус обслуговування" без успіху. Напевно, я ще не звик до систематизації.
KIAaze

4
systemd-shutdowndбуло видалено з systemd у травні 2015 року
JdeBP

Це правильно. Дякую, що вказали на це. Якщо нова версія Systemd використовується, то що - щось подібне до наступного повинно вистачити: 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.
Євген Верещагін

9
# cat /run/systemd/shutdown/scheduled
USEC=1537242600000000
WARN_WALL=1
MODE=poweroff

USEC - це часова мітка UNIX епохи з мікросекундною точністю, тому:

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

відобразиться щось на зразок:

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

Версія Systemd 232-25 + deb9u4 працює на Debian Stretch.


5

Для новіших версій дистрибутивів Linux, можливо, вам потрібно буде зробити:

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

Змінився спосіб того, як працює відключення

Пробував: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS

Список літератури


2
Вихід визначає час відключення як мікросекунди з епохи Unix. Щоб отримати час, прочитаний людиною:date -d @$(( $(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d' ' -f3) / 1000000 ))
200_спіз

4

Я зіткнувся з тим же питанням і знайшов інший спосіб перевірити план відключення.

Коли ви встановлюєте план відключення, стіна надсилатиме повідомлення всім, хто ввійшов у систему, з дозволом на повідомлення, встановленому на так. Для кожного виклику стіни буде записано повідомлення в syslog . Для пошуку системного журналу ви можете запустити команду journalctl -u systemd-shutdownd, -uопція може фільтрувати журнал за одиницею.

Під час запуску journalctl -u systemd-shutdowndвін покаже деталі закриття, як показано нижче:

[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

На Ubuntu 18,04 зупинки машини управляються systemd. На своїй машині я ввімкнув автоматичні перезавантаження через автоматичне оновлення:

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

Запланований час автоматичного перезавантаження зберігається в /run/systemd/shutdown/scheduled.

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

Ви можете перетворити це на час, прочитаний людиною, за допомогою наступної команди:

$ date -d "@$( awk -F '=' '/USEC/{ $2=substr($2,1,10); print $2 }' /run/systemd/shutdown/scheduled )"
Thu Jul 25 02:00:00 NZST 2019
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.