メインコンテンツにスキップ

Crontab Expression Tester

Cron式をテストし、次の実行時刻を確認するツールです。スケジューリングタスクの設定とデバッグに必須!

Format: minute hour day month day-of-week

📋 Quick Examples

📖 Cron Expression Reference

FieldValuesSpecial Characters
Minute0-59* , - /
Hour0-23* , - /
Day of Month1-31* , - / ?
Month1-12 or JAN-DEC* , - /
Day of Week0-7 or SUN-SAT* , - / ?

Special Characters

  • * - Any value (every minute, every hour, etc.)
  • , - List separator (1,3,5)
  • - - Range (1-5)
  • / - Step values (*/5 = every 5 units)
  • ? - No specific value (used in day fields)

Common Examples

0 0 * * *Daily at midnight
0 */2 * * *Every 2 hours
30 9 * * 1-5Weekdays at 9:30 AM
0 0 1 * *First day of every month
0 0 * * 0Every Sunday at midnight
*/15 * * * *Every 15 minutes

Cron式とは?

Cron式は、Unix系システムでタスクスケジューリングに使用する時刻指定形式です。

基本構造:

* * * * *
│ │ │ │ │
│ │ │ │ └─ 曜日 (0-7、0と7は日曜日)
│ │ │ └─── 月 (1-12)
│ │ └───── 日 (1-31)
│ └─────── 時 (0-23)
└───────── 分 (0-59)

主な機能

1. リアルタイムパース

  • Cron式入力時に即座に検証
  • 文法エラーをリアルタイムで検出
  • 人間が読める形式に変換

2. 次の実行時刻計算

  • 今後10回の実行時刻を表示
  • 相対時間表示 (例: "5分後")
  • 正確な日付/時刻フォーマット

3. クイック例

  • よく使用するパターンをワンクリックでロード
  • 毎分、毎時、毎日、毎週、毎月など
  • 平日/週末の例

実際の使用例

1. バックアップスケジュール

毎日深夜0時にバックアップ:

0 0 * * *
→ "毎日0時0分に実行"

次の実行:
- 2024-01-16 00:00:00 (5時間後)
- 2024-01-17 00:00:00 (1日後)
- 2024-01-18 00:00:00 (2日後)

毎週日曜日午前2時:

0 2 * * 0
→ "日曜日の午前2時に実行"

毎月1日午前3時:

0 3 1 * *
→ "毎月1日の午前3時に実行"

2. モニタリングタスク

5分ごとにヘルスチェック:

*/5 * * * *
→ "5分ごとに実行"

次の実行:
- 2024-01-15 18:05:00 (2分後)
- 2024-01-15 18:10:00 (7分後)
- 2024-01-15 18:15:00 (12分後)

15分ごとにログ収集:

*/15 * * * *
→ "15分ごとに実行"

毎時0分:

0 * * * *
→ "毎時0分に実行"

3. レポート生成

平日午前9時に日報:

0 9 * * 1-5
→ "月曜日から金曜日の午前9時に実行"

毎週金曜日午後5時に週報:

0 17 * * 5
→ "金曜日の午後5時に実行"

4. データ同期

2時間ごと:

0 */2 * * *
→ "2時間ごとの0分に実行"

毎日午前6時と午後6時:

0 6,18 * * *
→ "午前6時と午後6時に実行"

平日2時間ごと:

0 9-17/2 * * 1-5
→ "月曜日から金曜日の9時から17時まで2時間ごとに実行"
# 9時、11時、13時、15時、17時

Cron式の文法

特殊文字

1. アスタリスク (*)

* * * * *
→ "毎分実行"

すべての値を意味
分フィールドの*: 毎分
時フィールドの*: 毎時

2. カンマ (,)

0 9,12,18 * * *
→ "午前9時、正午12時、午後6時に実行"

複数の値をリスト化

3. ハイフン (-)

0 9-17 * * *
→ "9時から17時まで毎時実行"

範囲を指定
9時から17時まで (9,10,11,12,13,14,15,16,17)

4. スラッシュ (/)

*/10 * * * *
→ "10分ごとに実行"

間隔を指定
/10: 10単位ごと
5-45/10 * * * *
→ "5分から45分まで10分ごとに実行"
# 5分、15分、25分、35分、45分

フィールド別値の範囲

フィールド値の範囲特殊値
0-59* , - /
0-23* , - /
1-31* , - / ?
1-12 または JAN-DEC* , - /
曜日0-7 または SUN-SAT* , - / ?

曜日の参考:

  • 0 = 日曜日
  • 1 = 月曜日
  • 2 = 火曜日
  • 3 = 水曜日
  • 4 = 木曜日
  • 5 = 金曜日
  • 6 = 土曜日
  • 7 = 日曜日 (0と同じ)

実務例

サーバー管理

毎日ログローテーション:

0 0 * * *
/usr/sbin/logrotate /etc/logrotate.conf

週次システムアップデート (日曜日深夜3時):

0 3 * * 0
apt-get update && apt-get upgrade -y

Webアプリケーション

10分ごとにセッションクリーンアップ:

*/10 * * * *
node /app/scripts/cleanup-sessions.js

毎時キャッシュ無効化:

0 * * * *
curl -X POST https://api.example.com/cache/invalidate

データベース

日次バックアップ (深夜2時):

0 2 * * *
mysqldump -u root -p$PASSWORD mydb > /backup/mydb_$(date +\%Y\%m\%d).sql

週次フルバックアップ (日曜日深夜1時):

0 1 * * 0
pg_dump mydb | gzip > /backup/full_$(date +\%Y\%m\%d).sql.gz

使用のヒント

1. タイムゾーン注意

# システムタイムゾーン確認
date
timedatectl

# cronはシステムタイムゾーンを使用
# UTCサーバーでJST時刻で実行するには:
# JST 9時 = UTC 0時
0 0 * * * # UTC基準

2. ログ設定

# 標準出力/エラーをファイルにリダイレクト
*/5 * * * * /script.sh >> /var/log/cron.log 2>&1

# エラーのみログ
*/5 * * * * /script.sh 2>> /var/log/cron-error.log

# 出力を無視
*/5 * * * * /script.sh > /dev/null 2>&1

3. 環境変数設定

# crontab内で環境変数を設定
PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/bash
MAILTO=admin@example.com

0 2 * * * /scripts/backup.sh

注意事項

1. PATH問題

# ❌ コマンドが見つからない
*/5 * * * * node script.js

# ✅ 完全パスを使用
*/5 * * * * /usr/bin/node /home/user/script.js

# ✅ PATH設定
PATH=/usr/local/bin:/usr/bin:/bin
*/5 * * * * node /home/user/script.js

2. パーセント記号のエスケープ

# ❌ エラー発生
0 2 * * * backup-$(date +%Y%m%d).sh

# ✅ パーセントをバックスラッシュでエスケープ
0 2 * * * backup-$(date +\%Y\%m\%d).sh

トラブルシューティング

Cronが実行されない時

  1. Cronサービス確認:

    # systemd
    sudo systemctl status cron
    sudo systemctl start cron

    # SysV
    sudo service cron status
    sudo service cron start
  2. ログ確認:

    # Debian/Ubuntu
    grep CRON /var/log/syslog

    # CentOS/RHEL
    grep CRON /var/log/cron
  3. ユーザー権限確認:

    # 現在のユーザーのcrontab
    crontab -l

    # root権限が必要なタスクは
    sudo crontab -e

関連ツール

ベストプラクティス

1. 明確なコメント

# 毎日深夜2時にデータベースバックアップ
0 2 * * * /scripts/db-backup.sh

# 平日午前9時にレポート生成
0 9 * * 1-5 /scripts/generate-report.sh

2. エラー通知

# 失敗時にメール送信
MAILTO=admin@example.com
0 2 * * * /scripts/critical-backup.sh || echo "Backup failed!"

3. タイムアウト設定

# 最大1時間実行
0 2 * * * timeout 1h /scripts/long-running-task.sh

💬 このツールは役に立ちましたか?

このCrontabテスターがお役に立ちましたら、ぜひ周りの開発者にもシェアしてください。フィードバックやご要望がございましたら、お気軽にお知らせください。

プライバシー保護

このツールは完全にクライアント側で動作します。入力されたCron式はサーバーに送信されず、ブラウザでのみ処理されます。あなたのデータは完全に安全です。