Linuxマシンを指定時刻に自動起動させるrtcwake

ALL
スポンサーリンク
スポンサーリンク

はじめに

Linuxでrtcwakeコマンドを使えば、シャットダウン後に自動起動するように指定ができます。
起動のタイミングは、指定秒数後や、指定日時を指定できます。

なお、シャットダウン後に法定停電等で停電した場合は、停電から復旧していても、指定時刻にマシンが起動することはありません。
rtcwakeコマンドは起動時間の設定に、RTC(Real Time Clock)アラームを使用していますが、このアラームは電源が供給されている間しか機能しません。停電が発生すると、RTCアラームがリセットされるため、指定した時間にPCが起動できません。

また、RaspberryPiのように RTCが無い場合も、次のようなエラー表示が出て rtcwakeコマンドは使えません。
(2023.12.6時点で日本で一般販売されていませんが、RaspberryPi 5 はRTCが搭載されているので、おそらく rtcwakeが使えると思います)

rtcwake: /dev/rtc0: unable to find device: No such file or directory

準備

rootで以下を実行します。

CentOS7
hwclock --systohc --localtime --debug

CentOS7以外
hwclock --systohc --localtime --verbose

実行で、/etc/adjtime にファイルが存在しなかった場合は、ファイルが作成されます。
もともとあった場合は、更新されます。

上記コマンドでハードウェアクロックをローカルタイムに設定します。

参考:Ubuntu で起動直後だけ時刻が9時間ずれる – パソコン鳥のブログ

コマンド

以降のコマンドはrootで実行してください。

シャットダウン実行し、指定時刻にONする

シャットダウンし、指定秒数後に起動する場合です。
-s で指定した秒数後に、電源ONして起動してきます。下記例では、24時間後です。

rtcwake -m off -s 86400

シャットダウンし、指定日時に起動させる場合です。
–date に続けて、YYYYMMDDhhmmss の形式で指定します。
CentOS7 では –dateオプションが無いので、代わりに -tオプションで指定します。

CentOS7以外
rtcwake -m off --date 20231206150000

CentOS7
rtcwake -m off -t $(date +%s -d "2023-12-6 15:00:00")

シャットダウンせずに、ONする指定時刻だけを設定する

シャットダウンをせずに、起動させる時刻の設定だけ行う場合は、-m off の代わりに -m no を指定します。

rtcwake -m no -s 86400
rtcwake -m no --date 20231206150000

設定されている内容を確認します。

rtcwake -m show

次のように設定時刻が表示されます。
この後、マシンをシャットダウンしておくと、指定時刻にマシンがONされます。

アラーム: ON  Thu Dec  6 15:00:00 2023

設定を無効化するには、次を実行します。

rtcwake -m disable

無効化した後に確認すると、設定はクリアされています。

# rtcwake -m show
アラーム: OFF

注意

rtcwake -m no で起動時刻だけ設定した後に、指定時刻前にマシンを再起動すると、設定がクリアされます。
その後、シャットダウンしても、意図していた時刻には起動してこないので、注意してください。

参考

Manpage of RTCWAKE
rtcwakeの使用方法 #メモ – Qiita

コメント