systemd: как проверить запланированное время отложенного выключения?

14

Я люблю использовать shutdown -h TIME/+DELAYиногда. Однако после перехода на systemd (в Ubuntu) ситуация, похоже, немного изменилась.

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

Я просто бегал, ps aux | grep shutdownчтобы увидеть запланированное время отключения.

Теперь с systemd это просто показывает что-то вроде этого:

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

Как я могу проверить запланированное время остановки такого процесса?

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

KIAaze
источник

Ответы:

12

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

Первым аргументом может быть строка времени (обычно это «сейчас»).

Строка времени может быть либо в формате «чч: мм» для часов / минут, определяющих время, в которое должно выполняться отключение, заданное в 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

Ссылки

akarapatis
источник
2
Выходные данные определяют время выключения в микросекундах с начала эпохи Unix. Чтобы получить удобочитаемое время:date -d @$(( $(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d' ' -f3) / 1000000 ))
200_success
4

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

Когда вы устанавливаете план выключения, стена отправит сообщение всем, кто вошел в систему с разрешением на передачу сообщений, установленным на yes. Для каждого вызова стены уведомление будет записано в системный журнал . Для поиска в системном журнале вы можете запустить команду 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
Htaccess
источник