導入
「毎晩3時にバックアップを取る」「15分ごとに監視スクリプトを回す」——こうした 定期実行 を担うのが cron の仕組みです。前レッスンで作ったスクリプトを、時間で自動的に走らせる。人が張り付かなくてもサーバーが自分で仕事をする、運用自動化の到達点です。予定表を管理するコマンドが crontab(cron table)です。
説明
自分の予定表は crontab -l(list)で確認します。このシミュレータには例として2つの予定が入っています。
crontab -l
各行は 「分 時 日 月 曜日 コマンド」 の6つのフィールドでできています。最初の5つが「いつ」、最後が「何を」です。
0 3 * * * /home/user/scripts/backup.sh
│ │ │ │ │
│ │ │ │ └ 曜日(0=日〜6=土。* はすべて)
│ │ │ └── 月(1〜12。* はすべて)
│ │ └──── 日(1〜31。* はすべて)
│ └────── 時(0〜23)
└──────── 分(0〜59)
つまり 0 3 * * * は「毎日3時0分」。*/15 * * * * の */15 は「15分おき」という意味です。読めるようになると、他人が仕込んだ設定も理解できます。ここに前レッスンの backup.sh が登録されているのに注目——「スクリプトを書く → cron で定期実行する」がつながりました。
予定表を編集するときは本来 crontab -e(エディタが開く)、まるごと消すときは crontab -r です。
crontab -r
crontab -l
-rは予定表を全消しする取り消せない操作です。本物の環境では要注意(このシミュレータは「最初からやり直す」で戻せます)。cron はログのローテーション、バックアップ、監視、証明書の更新など、サーバー運用のあらゆる「定期作業」の裏で働いています。
やってみよう
crontab -l で今の予定を眺め、0 3 * * *(毎日3時)と */15 * * * *(15分おき)が何を表すか、上の図と照らし合わせてください。crontab -r を打ったあと crontab -l を実行すると、予定が空になる(no crontab for ...)ことも確かめましょう。
演習
今のユーザーに登録されている cron の予定を一覧表示してください。
ヒント1を見る
一覧は list の頭文字、-l です。
ヒント2を見る
crontab -l