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分に変更するようです。
man shutdown(8) は言う:
最初の引数は時間文字列(通常は「現在」)です。
時間文字列は、24時間形式で指定されたシャットダウンを実行する時間を指定する時間/分を表す "hh:mm"のいずれかの形式になります。あるいは、mから指定された分数mを参照する構文 "+ m"の場合もあります。 「今」は「+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)...
です
# 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で実行されています。
新しいLinuxディストリビューションバージョンの場合、次のことを行う必要があります。
busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown
シャットダウンの動作方法が変更されました
試してみました:-Debian Stretch 9.6-Ubuntu 18.04.1 LTS
参考文献
同じ質問に出会い、シャットダウン計画を確認する別の方法を見つけました。
シャットダウン計画を設定すると、wallは、mesg権限がyesに設定されてログインしているすべてのユーザーにメッセージを送信します。壁が呼び出されるたびに、通知がsyslogに書き込まれます。 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)...
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