Cron式ジェネレーター

crontab の書き方を視覚的に生成・確認

よく使うプリセット

毎分
毎時
毎日
毎月
曜日
毎曜日

生成されたCron式

* * * * *
: 毎分
: 毎時
: 毎日
: 毎月
曜日: 毎曜日

次回実行時刻(今から5回分)

12026/4/28 0:13:00
22026/4/28 0:14:00
32026/4/28 0:15:00
42026/4/28 0:16:00
52026/4/28 0:17:00

よくある質問

曜日の「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式の書き方

┌─────── 分 (0-59)
│ ┌───── 時 (0-23)
│ │ ┌─── 日 (1-31)
│ │ │ ┌─ 月 (1-12)
│ │ │ │ ┌ 曜日 (0-6, 0=日)
* * * * *
*すべての値(毎分・毎時など)
*/nn ごと(例: */5 = 5分ごと)
a-ba〜bの範囲(例: 1-5 = 月〜金)
a,ba または b(例: 0,30 = 0分と30分)