時限シャットダウン

Linuxサーバを運用しているとある時刻に
電源オフしたいような状況がときどきあります。
電気設備点検のための計画停電なんかがそうですが、
例えば職場で日曜に停電があるとして、
土曜に休日出勤する人がいるので
金曜日の夕方に手動で電源を落とすのはまずい、
というようなケースはありがちです。

まあ時限シャットダウンは簡単で、
サーバにリモートでログインしroot権限で

# shutdown -h <電源オフする時刻(hh:mmの形式)> &

と実行してログオフしておけばいいだけです。
具体的には次の午後9時に落としたければ

# shutdown -h 21:00 &

でかまいません。

しかしこれでは次の24時間より後の時刻は指定できません。
そういう場合は

# shutdown -h <電源オフするまでの時間(単位:分)> &

で解決です。
36時間後に落としたければ

# shutdown -h 2160 &

となります。

ところでshutdownコマンドは特定のタイミングで
“/etc/nologin”ファイルを生成します。
これが存在するとrootユーザ以外はログインできなくなります。
sshでのリモートログインではrootユーザでの直接のログインを
禁止するのが定番のセキュリティ対策ですので、
それができるとまったくログインできなくなってしまいます。

通常そのファイルはシャットダウンの5分前以降に
作られることになっているようですが、
先日古いサーバでかなり先の時刻に時限シャットダウンを
仕掛けたところ、いきなりまったくログインできなくなりました。
理由は分かりませんが、
職場で退社時刻直前の出来事だったためまさにパニックです。
まあsshでログインできなくなっただけで、
ウェブサーバ等は正常動作していたので、
そのまま放っておくことにしましたが。