cron linux devops cheat-sheet scheduling automation

Cron構文チートシート:完全リファレンスとスケジュール可視化

特殊文字、一般的な例、可視化ツールの説明を含む、cron式構文の包括的なガイド。LinuxおよびUnixのcrontabスケジューリングをマスターしましょう。

Cron構文チートシート:完全リファレンスガイド

Cronは、Unix系オペレーティングシステムにおける時間ベースのジョブスケジューラです。バックグラウンドタスクを設定する開発者であれ、サーバーメンテナンスを管理するDevOpsエンジニアであれ、Cron式の構文を理解することは不可欠です。

このガイドでは、cronフィールド、特殊文字、および実用的な例を完全に詳しく説明し、自信を持ってタスクをスケジュールできるようにします。


1. Cron式のフォーマット

標準的なcron式は5つのフィールドで構成されます(QuartzやJenkinsなどの一部のシステムでは6つです)。

┌───────────── 分 (0 - 59)
│ ┌───────────── 時 (0 - 23)
│ │ ┌───────────── 日 (1 - 31)
│ │ │ ┌───────────── 月 (1 - 12)
│ │ │ │ ┌───────────── 曜日 (0 - 6) (日曜日から土曜日)
│ │ │ │ │
* * * * *

2. 特殊文字リファレンス

文字 説明
* 任意の値:そのフィールドのすべての可能な値に一致します。 * * * * * (毎分)
, 値リストの区切り文字:値のリストを指定します。 0,15,30,45 (15分ごと)
- 値の範囲:XからYまでの範囲を指定します。 9-17 (午前9時から午後5時まで)
/ ステップ値:増分を指定します。 */15 (15分ごと)
L 最後 (Last):月または週の最終日を指定します。 5L (月の最終金曜日)
W 平日 (Weekday):指定した日に最も近い平日(月〜金)を指定します。 15W (15日に最も近い平日)
# 月の第N日:曜日の第何回目を指定します。 6#3 (月の第3土曜日)

3. 一般的なCronの例

スケジュール 説明
毎分 * * * * * タスクを毎分実行します。
毎時 0 * * * * 毎時0分に実行します。
毎日深夜 0 0 * * * 毎日00:00に1回実行します。
毎週日曜午前4時 0 4 * * 0 週次のバックアップに最適です。
15分ごと */15 * * * * :00, :15, :30, :45に実行します。
営業時間 (9時-17時) 0 9-17 * * 1-5 平日の毎時0分に実行します。

4. crontab -e vs crontab -l

crontabコマンドは、個人のcronジョブを管理するために使用されます。

  • crontab -e: 個人のcrontabファイルを編集用に開きます。初めての場合は、エディタ(nanoやvimなど)の選択を求められることがあります。
  • crontab -l: 現在のユーザーのアクティブなcronジョブをすべて一覧表示します。
  • crontab -r: 現在のすべてのcronジョブを削除します。注意して使用してください!

5. スケジュールの可視化

生のcron式を読むのは難しい場合があります。そのため、私たちは**Cronスケジュール可視化ツール**を構築しました。

私たちのツールは以下のことを助けます:

  1. 式の解析0 4 * * 0を「日曜日の04:00」に即座に翻訳します。
  2. 次回の実行時間:タイムゾーンに基づいて、スケジュールされた次の5回の実行時間を確認できます。
  3. 人間が読める説明*/5 9-17 * * 1-5が何を意味するか、もう推測する必要はありません。

FAQ:Cronジョブのトラブルシューティング

Q: Cronジョブが実行されないのはなぜですか?

A: 最も一般的な理由は環境変数です。Cronは最小限のシェル環境で実行されます。コマンドには常に絶対パスを使用し(例:python3ではなく/usr/bin/python3)、出力をファイルに記録してください:* * * * * /path/to/script.sh >> /var/log/cron.log 2>&1

Q: systemd timerの代替案は何ですか?

A: 最近のLinuxディストリビューション(Ubuntu、Fedoraなど)は、cronよりもsystemd timersを推奨しています。設定はより複雑ですが、journalctlによる優れたログ記録、依存関係、およびより柔軟なスケジューリングを提供します。

Q: Cronでのタイムゾーンの問題はどう対処すればよいですか?

A: デフォルトでは、cronはシステムのローカルタイムゾーン(サーバーでは通常UTC)で実行されます。一部のシステムではcrontabファイルの先頭にCRON_TZ=Asia/Tokyoを設定できますが、最も確実な方法はサーバーの時計を希望のタイムゾーンに同期させることです。


Tool3M 関連ツール