【くろんじょぶ】

cronジョブ とは?

💡 「毎日3時にバックアップ」を自動実行するスケジューラー
📌 このページのポイント
cronジョブのスケジュール構文 30 9 * * 1-5 /usr/local/bin/backup.sh (30) (9) (*=毎日) (*=毎月) 曜日 (1-5=月〜金) → 平日の毎朝9:30にバックアップを実行 よく使う例: 0 * * * * = 毎時0分 0 0 * * * = 毎日深夜 */5 * * * * = 5分ごと 0 0 1 * * = 毎月1日
cronジョブのイメージ
ひよこ ひよこ

crontabってどう書くの?

ペンギン先生 ペンギン先生

「分 時 日 月 曜日 コマンド」の形式。0 3 * * * /usr/local/bin/backup.shは「毎日3時0分にバックアップ実行」。*/5 * * * *は「5分ごと」。0 9 * * 1は「毎週月曜9時」。*は「全て」、*/nは「n間隔」。crontab -eで編集、crontab -lで確認するよ

ひよこ ひよこ

よくあるトラブルは?

ペンギン先生 ペンギン先生

環境変数が通らない(cronはログインシェルと環境が違う。PATHをcrontab内で明示的に設定するか、コマンドを絶対パスで書く)、②出力先が不明(MAILTO=やリダイレクトでログを残す)、③タイムゾーンの罠(UTCで動いている場合がある)、④権限不足。cronのログは/var/log/syslogで確認できるよ

ひよこ ひよこ

クラウドではどうする?

ペンギン先生 ペンギン先生

サーバーレスcronジョブを実行する方法がいくつかある。AWSならEventBridge+Lambda、GCPならCloud Scheduler+Cloud Functions、AzureならTimer Trigger+Azure Functions。サーバーが不要で、実行時間分だけの課金。Vercelcron機能やGitHub Actionsのscheduleトリガーも手軽だよ

ひよこ ひよこ

cronの代替ツールは?

ペンギン先生 ペンギン先生

systemdのtimerユニットはcronの後継として使えて、ログ管理依存関係が優れている。複雑なワークフローならApache AirflowPrefectDagsterKubernetesならCronJobリソース。単純な定期実行ならcronで十分だけど、依存関係リトライが必要なジョブにはワークフローエンジンの方が適しているよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
cronジョブ」って出てきたら「定期的にコマンドを自動実行する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Cron Job」 = クロンジョブ
💬 Chronos(ギリシャ語の「時間」)に由来。時間に基づいて仕事をスケジューリングするよ
← 用語集にもどる