cron「55 23 28-31 * *」の意味と書き方
毎月28・29・30・31日の23時55分に実行します。
この式の意味
毎月28・29・30・31日の23時55分に実行します。
式の分解
| フィールド | 値 | 意味 |
| 分 | 55 | 55分 |
| 時 | 23 | 23時 |
| 日 | 28-31 | 28日・29日・30日・31日 |
| 月 | * | 毎月 |
| 曜日 | * | すべての曜日 |
この式がよく使われる場面
月末締め処理に使われます。標準cronには「月末」の指定がないため、28〜31日に毎日起動し、スクリプト側で「翌日が1日かどうか」を判定するのが定番の書き方です。
実行される時刻の例
2026年1月1日以降の実行例です。
| 1回目 | 2026/01/28(水)23:55 |
|---|---|
| 2回目 | 2026/01/29(木)23:55 |
| 3回目 | 2026/01/30(金)23:55 |
つまずきポイント
- 存在しない日付(2月30日など)は自動的にスキップされるため、28-31指定でも安全です。
- 判定の例: [ "$(date -d tomorrow +\%d)" = "01" ] && コマンド (翌日が1日のときだけ実行)
- crontabに直書きする場合、%は「\%」とエスケープが必要です(エスケープしないと%以降が標準入力扱いになりコマンドが動きません)。長くなる場合はスクリプトファイルに切り出すのが安全です。
- 「date -d tomorrow」はGNU date(Linux標準)用です。macOS/BSDでは「date -v+1d +\%d」を使います。
この式を試す・編集する
下のツールにこの式が入っています。数値を変えると、意味と次回実行時刻がその場で更新されます。
次に実行される時刻
※ 時刻はお使いの端末のローカルタイムで計算しています。
cron式の5つのフィールド
cron式は左から「分・時・日・月・曜日」の5つの値で指定します。*は「毎」、*/5は「5ごと」、1-5は範囲、1,3,5は列挙を表します。曜日は0=日曜〜6=土曜(7も日曜)です。