Cron式パーサー
Cron式を解析・検証。人間が読める説明と次回実行時刻を表示。
形式: 分 時 日 月 曜日
関連ツール
Cronとは?
CronはUnix系システムで見られる時間ベースのジョブスケジューラーです。指定した時間に自動的にコマンドやスクリプトを実行できます - コンピュータのためのアラーム時計を設定するようなものです。
ギリシャ語の「chronos」(時間)にちなんで名付けられたcronは、1970年代からタスクをスケジューリングしており、繰り返しジョブを自動化する標準的な方法として今も使われています。
一般的な用途:
- 深夜のデータベースバックアップ
- 週次メールレポートの送信
- 古いファイルのクリーンアップ
- システム間のデータ同期
- 監視とアラート
Cron式の構文
cron式には5つ(または6つ)のフィールドがあります:
┌───────────── 分 (0-59)
│ ┌───────────── 時 (0-23)
│ │ ┌───────────── 日 (1-31)
│ │ │ ┌───────────── 月 (1-12)
│ │ │ │ ┌───────────── 曜日 (0-6, 日=0)
│ │ │ │ │
* * * * *
特殊文字:
| 記号 | 意味 | 例 |
|---|---|---|
* | 任意の値 | * * * * * = 毎分 |
, | リスト | 1,15,30 = 1、15、30に |
- | 範囲 | 1-5 = 1から5 |
/ | ステップ | */15 = 15ごと |
一般的なCronの例
🕐 時間ベース:
| 式 | 説明 |
|---|---|
0 * * * * | 毎時(0分に) |
0 0 * * * | 毎日深夜 |
0 9 * * * | 毎日午前9時 |
0 9 * * 1 | 毎週月曜日午前9時 |
0 0 1 * * | 毎月1日 |
⏱️ 間隔ベース:
| 式 | 説明 |
|---|---|
*/5 * * * * | 5分ごと |
*/15 * * * * | 15分ごと |
0 */2 * * * | 2時間ごと |
覚え方のコツ: 「分、時、日、月、曜日」- 最小から最大の時間単位(ほぼ)と考えてください。
特殊文字列
多くのcron実装がこれらのショートカットをサポートしています:
| 文字列 | 同等 | 説明 |
|---|---|---|
@yearly | 0 0 1 1 * | 年1回(1月1日) |
@monthly | 0 0 1 * * | 月の最初 |
@weekly | 0 0 * * 0 | 日曜深夜 |
@daily | 0 0 * * * | 毎日深夜 |
@hourly | 0 * * * * | 毎時 |
すべてのcron実装がこれらのショートカットをサポートしているわけではありません! Linuxの標準crontabはサポートしていますが、クラウドスケジューラーはサポートしていない場合があります。常に式をテストしてください。
よくあるCronの間違い
❌ 間違い1: 「〜に」vs「〜ごと」の混同
# 間違い: 9時の毎分実行
* 9 * * *
# 正しい: 午前9時に1回実行
0 9 * * *
❌ 間違い2: 曜日の混乱
# 日曜日 = 0(または一部のシステムでは7)
# 月曜日 = 1
# 土曜日 = 6
❌ 間違い3: タイムゾーンの問題
- Cronはシステムのタイムゾーンを使用
- 本番サーバーにはUTCがより安全
- 夏時間の移行には注意
ベストプラクティス
🔧 信頼性のために:
- cronジョブの出力を常にログに記録
- エラー処理と通知を追加
- 重複実行を防ぐためにロックファイルを使用
- 長時間実行ジョブにはタイムアウトを設定
📝 メンテナンスのために:
# 良い: crontabにドキュメントを記述
# 毎晩午前2時にデータベースをバックアップ
0 2 * * * /scripts/backup.sh
⏰ パフォーマンスのために:
- 「キリの良い」時間に重いジョブを実行しない(多くのジョブが深夜に実行される!)
- ジョブをずらす:
0 0 * * *の代わりに3 0 * * *を使用 - システム負荷とリソース競合を考慮