危険察知4 択難易度 応用

状況

告知は「10/20 02:00〜03:00(JST)にメンテナンス」。サーバーのタイムゾーンは UTC。停止を cron で予約する手順を確認している。

ダブルチェッカーとして最初に止めるべき点は?

1. 告知: 10/20 02:00〜03:00(JST)にサービスを停止2. crontab に次の 1 行を追加する   0 2 20 10 * /opt/app/bin/maintenance on3. 03:00 に手動で maintenance off を実行する

正答

  1. cron の月は 0 始まりなので、10 と書くと 11 月に実行される
  2. サーバーは UTC なので 02:00 は日本時間 11:00。日中に止まる
  3. この書き方では毎年 10/20 に実行されるので、作業後に消す手順が要る
  4. 3 の解除も手動ではなく cron で予約すべき

解説

cron はサーバーのタイムゾーンで時刻を解釈する。UTC のサーバーで 02:00 と書くと日本時間 11:00 に実行され、告知していない日中にサービスが止まる。JST 02:00 にしたいなら UTC では前日 10/19 の 17:00(0 17 19 10 *)。cron の月は 1〜12 なので 1 番目は誤り。毎年実行される点は実在する問題だが、作業後に消せば済み、告知と違う時間に本番を止める誤りより優先度は低い。

参考: man7.org

runbooktimezonecron

この問題を含む 危険察知 のテストを制限時間つきで解く

危険察知クイズへ