Cron式ジェネレーター
crontab の書き方を視覚的に生成・確認
よく使うプリセット
生成されたCron式
次回実行時刻(今から5回分)
よくある質問
曜日の「0」は何曜日ですか?
標準的なcrontab(Vixie cron / Linux)では「0」が日曜日です。多くのシステムでは「7」も日曜日として認識され、同じ意味を持ちます。月曜=1、火曜=2 …土曜=6 と続きます。POSIX標準ではSUN/MON/TUE/WED/THU/FRI/SAT などの英字略称も使えますが、互換性のため数字での指定が推奨されます。
31日を指定したら全月で実行されますか?
31日を指定した場合、31日のない月(2月・4月・6月・9月・11月)では実行されません。月末に確実に実行したい場合は、(1) cron拡張記法 "L"(last)が使えるシステム(Quartz・Jenkinsなど)では `0 0 L * *` と書く、(2) 標準cronでは月初の処理として翌月1日に実行する、(3) スクリプト内で「今日が月末か」をチェックする、のいずれかが必要です。
秒単位での実行はできますか?
標準的なUnix crontabは「分」が最小単位で、秒単位の指定はできません。秒単位で実行したい場合は、(1) `*/1 * * * *` で毎分起動するスクリプト内で `sleep 30` 等を組み合わせる、(2) Quartz / Spring Schedulerなど7フィールド形式(秒を含む)対応のスケジューラを使う、(3) systemd timerやAnacron で精度の高いスケジューリングを行う、を検討してください。
複数の時刻で実行できますか?
カンマ(,)で区切ることで複数の値を指定できます。例: `0 9,14,18 * * *` は9時・14時・18時に実行されます。範囲指定(-)と組み合わせて `0 9-17 * * 1-5` のように「平日9〜17時の毎時0分」も可能です。複雑な周期は `*/5` のようなステップ値(5分ごと)も使えます。
タイムゾーンはどう指定しますか?
Linuxのcrontabは標準でサーバーのシステムタイムゾーン(/etc/timezone)に従います。ジョブ単位で異なるタイムゾーンを指定したい場合は、crontabの先頭に `CRON_TZ=Asia/Tokyo` などの環境変数を記述してください。AWSのCloudWatch Events / EventBridgeはUTC固定、GitHub ActionsもUTC固定なので、JSTで実行したい時刻からの逆算が必要です。
cron式が正しく動かない時のデバッグ方法は?
(1) `crontab -l` で登録内容を確認、(2) `/var/log/syslog` や `/var/log/cron.log` でcron実行ログをチェック、(3) コマンドの絶対パスを使用(PATH環境変数がcron実行時に異なるため)、(4) 標準出力・標準エラーをファイルにリダイレクト(例: `>> /tmp/cron.log 2>&1`)、(5) 短い間隔で動作確認した後に本番スケジュールに変更、の順序が確実です。
Cron式の書き方
*すべての値(毎分・毎時など)*/nn ごと(例: */5 = 5分ごと)a-ba〜bの範囲(例: 1-5 = 月〜金)a,ba または b(例: 0,30 = 0分と30分)