【くろん】

cron(定期実行) とは?

最終更新:
💡 「毎日3時にバックアップ」を自動でやってくれる

Unix系OSで、指定した日時にコマンドを起動する仕組み。crontabに予定を登録して、バックアップやログ集計などを定期実行する。

📌 このページのポイント
cron:予定表に従って起動 ユーザーのcrontabの例 分 時 日 月 曜日 0 3 * * * 続けてコマンド:/backup.sh 予定表 cron 処理を起動 例:毎日3:00(タイムゾーンを確認)
時刻の5項目の後にコマンドを書く。cronは予定を確認して起動する。処理の成功や重複の防止は別に管理する。
ひよこ ひよこ
cronの書き方は?
ペンギン先生 ペンギン先生
ユーザーのcrontabでは「分 時 日 月 曜日」の5項目に続けてコマンドを書くよ。「0 3 * * * /backup.sh」は毎日3時、「*/5 * * * * /check.sh」は各時の0・5・10分…、「0 9 * * 1 /report.sh」は毎週月曜9時に起動する例。各スクリプトは実際に用意しておく必要があるよ。
ひよこ ひよこ
どうやって登録するの?
ペンギン先生 ペンギン先生
crontab -eで自分の予定表を編集し、保存後にcrontab -lで内容を確かめるよ。自分のcrontabに書いたコマンドは自分の権限で動く。ここで紹介するCronieでは、/etc/crontabや/etc/cron.dの形式は時刻の5項目の後に実行ユーザーも書くんだ。
ひよこ ひよこ
手動では動くのにcronだと失敗するのはなぜ?
ペンギン先生 ペンギン先生
実行時のPATHや作業場所、使うシェルが、普段の端末と違う場合があるよ。コマンドやファイルの場所を明確にして、必要な環境変数も設定しよう。出力はログなどで確認できるようにする。Cronieはメールやシステムログへ出力できるけど、使える通知方法は設定によるんだ。
ひよこ ひよこ
前の処理が終わっていなくても次が始まる?
ペンギン先生 ペンギン先生
予定に合えば次の処理も起動するので、同時に動かしたくない処理は排他制御などが必要だよ。時刻に起動することと、処理が成功することも別。失敗の検知や再試行は別に用意し、停止中に逃した通常の予定が必ず自動で実行されるとは考えないようにしよう。
ひよこ ひよこ
どの環境でも同じ時刻に動くの?
ペンギン先生 ペンギン先生
使うタイムゾーンを確認しよう。CronieではCRON_TZで予定表のタイムゾーンを指定できるけど、これは全実装共通の機能ではない。夏時間の扱いや拡張記法も実装ごとに確かめる。クラウドの予約実行サービスなどへ移すときも、項目数や曜日の解釈が同じとは限らないよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「cron」って出てきたら「予定した日時にコマンドを起動する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「cron」 = 定期実行の仕組み(クロン)
💬 予定を記したcrontabを、常駐するcronデーモンが確認してコマンドを起動するよ。crontabは予定表、cronはそれに従って動く仕組み、と分けると覚えやすいね。

参考資料

← 用語集にもどる