導入
夜中の3時にバックアップを取りたい。でも毎晩3時に起きるわけにはいきません。Linux には、時刻になったらコマンドを実行してくれる常駐プログラムが最初から入っています。それが cron です。
説明
cron は、サーバーの裏でずっと動いている番人です。1分ごとに「いま実行すべき予定はあるか」を確認し、あれば実行します。
flowchart LR
A["cron(常駐)"] -->|"1分ごとに確認"| B["予定表 crontab"]
B --> C{"いまの時刻に<br/>合う行はある?"}
C -->|"ある"| D["そのコマンドを実行"]
C -->|"ない"| A
予定表のことを crontab(cron table) と呼び、ユーザーごとに1つ持ちます。中身を見るコマンドが crontab -l(list)です。
#!/bin/bash
# いま登録されている定期実行の予定を確認する
echo "=== 登録されている予定 ==="
crontab -l
echo "=== 予定から呼ばれるスクリプト ==="
cat /home/user/scripts/backup.sh
このシミュレータには、最初から2つの予定が入っています。
0 3 * * * /home/user/scripts/backup.sh
*/15 * * * * /home/user/scripts/deploy.sh
1行が1つの予定で、**前半5つが「いつ」、残りが「何を」**です。次のレッスンで読み方をきっちり押さえます。
cron が使われる場面は、実務では山ほどあります。
- バックアップ(毎晩・毎週)
- ログのローテーションと古いログの削除
- 死活監視(数分おきにチェックして、異常ならアラート)
- 証明書の自動更新(月1回)
- 集計バッチ(毎朝、前日分のレポートを作る)
つまり、あなたが書いたスクリプトの多くは、最終的に cron に登録されるということです。第1章で「手作業を仕組みに変える」と言いましたが、その最後のピースがここにあります。
やってみよう
下の端末で crontab -l と打って、いま登録されている予定を眺めてください。次に cat scripts/backup.sh で、予定表から呼ばれているスクリプトの中身を見てみましょう。「スクリプトを書く → cron に登録する」という関係が具体的に見えます。
演習
いま登録されている cron の予定を一覧表示してください。
ヒント1を見る
一覧は list の頭文字、-l です。
ヒント2を見る
下の端末で crontab -l