日本語

開発者ツール · Crontab ジェネレーター

5 つの crontab フィールドの仕組み: 分、時間、日、月、曜日

· 仕組み

クロン スケジュール設定 開発者のワークフロー

時計とカレンダーのシンボルに合わせた cron スケジュールの 5 つの位置
オリジナル ToolAcre ベクトル イラスト

すべての cron スケジュールは 5 つの位置フィールドで構成されており、順序は決して変わりません。この投稿では、各フィールドの範囲、日曜日の特殊なケース、および行がどのようにして一致する分のセットになるかについて説明します。

バックアップは毎晩 02:30 に実行する必要があります。そして、どのように記入すればよいかわからない 5 つの星も付いています。

毎晩 02:30 にバックアップが必要ですが、5 つの星のどれがその時間を所有しているかは混同し続けます。 Cron は位置に依存します。間違った列の数値は、表面的には有効に見えても、異なるスケジュールを生成します。ジョブを実行する必要がある時間、マシンのタイムゾーン、および crontab の所有者から始めます。その後、フィールドに入力してください。 ToolAcre は式を解析して記述することができますが、ジョブのインストールやバックアップ コマンドの実行は行いません。

位置フィールド、固定順序 - 分、時、日、月、曜日、コマンド

ユーザーの crontab 行には、分、時、日、月、曜日、そしてコマンドが含まれます。 30 2 * * * backup.sh では、30 が分、2 が時間です。cron 環境のタイムゾーンでは毎日 02:30 です。このコマンドは 6 回目のフィールドではありません。システム全体の /etc/crontab には、コマンドの前にユーザー フィールドが含まれる場合があります。そのため、システム エントリを個人用の crontab に盲目的にコピーすると、意図しないコマンドが実行される可能性があります。

各フィールドの範囲 - 0 ~ 59、0 ~ 23、1 ~ 31、1 ~ 12、および 0 ~ 7。ほとんどの cron では 0 と 7 はどちらも日曜日を意味します。

Vixie スタイルの規則である ToolAcre モデルでは、分は 0 ~ 59、時間は 0 ~ 23、日は 1 ~ 31、月 1 ~ 12、平日は 0 ~ 7 を受け入れます。 0と7は日曜日を意味します。アスタリスクは、そのフィールドのすべての値を意味します。範囲とカンマ区切りリストは値を制限できますが、フィールドの数値範囲は引き続き適用されます。時位置の 25 は深夜スケジュールではありません。これは無効であり、翌日に折り返すのではなく報告する必要があります。

マッチングの仕組み — cron は 1 分ごとに起動し、時刻フィールドが一致する場合に行を実行します (2 日フィールドの 1 つの例外を除く)。

Cron は一致するフィールドを毎分チェックします。分、時間、月はすべて一致する必要があります。 Vixie cron では、2 日のフィールドには特別なルールがあります。つまり、日付と曜日の両方が制限されている場合、両方が一致するとは限らず、どちらかが一致するとジョブがトリガーされます。したがって、0 0 13 * 5 は、13 日の金曜日だけでなく、月の 13 日または各金曜日を意味します。日中の位置にワイルドカードを使用すると、夜の例は意図したとおりに動作します。ツールの説明出力により、インストール前にその選択が表示されます。

実行例: 30 2 * * * backup.sh — 声に出して読み上げ、「平日 08:15」を最初から書きます

30 2 * * * backup.sh を「毎日 02:30 に backup.sh を実行してください」と読み上げます。平日の 08:15 の場合は、分 15、時間 8、無制限の日/月、および平日 1 ~ 5: 15 8 * * 1-5 を入力します。 5 つのスケジュール フィールドのみを Crontab ジェネレーターに貼り付け、その説明と次回実行リストを確認します。その後、独自の crontab エディタを使用してコマンドをインストールします。夏時間への変更に近いタイミングでバックアップを実行する場合は、すべてのローカル 02:30 が存在すると仮定するのではなく、実際のゾーンで次回実行のタイムスタンプを確認します。

月と曜日の名前(サポートされている名前の範囲を含む)

多くの cron 方言では、数字の代わりに JAN や MON などの 3 文字の名前を受け入れます。名前を使用すると人間が管理するスケジュールをより明確にできますが、日曜日に 0/7 を使用するのが依然として一般的であり、他の cron 実装では異なる拡張子が付いている場合があります。 ToolAcre は、JAN-MAR や MON-FRI などの一般的な月と曜日の名前と範囲を認識します。そのパーサーは 15 8 * JAN-MAR MON-FRI を受け入れます。別の cron 実装またはクラウド スケジューラでは、異なる数のフィールドまたは拡張機能が使用される場合があるため、ラインをインストールする前にその環境独自の文法を確認してください。

この概要で完全にはカバーされていないもの: リスト、手順、実行環境

この導入では、Vixie デイフィールド OR ルールについて説明しますが、リストとステップ、コマンドを実行するシェル/環境、または夏時間動作との複雑な組み合わせについては説明しません。それぞれが実際のタスクを実行するかどうかを変更できます。バリデーターはスケジュールを記述することはできますが、backup.sh が存在すること、権限があること、または回復可能なバックアップが書き​​込まれたことを保証することはできません。運用中の cron エントリに依存する前に、バックアップと復元をテストしてください。

要点: 5 つのフィールド、1 つの文法 — そして Crontab ジェネレーターが式を構築し、それを説明します

5 つの位置が 1 つの文法を形成します。 Crontab ジェネレーターは、システムに何もインストールせずに、提案されたスケジュールを読み取り、各フィールドに名前を付け、選択したゾーンで今後の実行を表示します。夜間と平日の例を入力し、ツールの表示内容と意図した内容を比較し、コマンドとタイムゾーンの決定をジョブの運用ドキュメントに記録します。