開発者ツール · Crontab ジェネレーター
Cron 式の例: 毎時、夜間、平日、月初め
· 仕組み
クロン の例 スケジュール設定
10 個のスケジュールで実際の crontab のほとんどをカバーします。この投稿では、それぞれの表現を示し、フィールドについて説明し、人々がほぼ間違いなく間違えるフィールドを指摘します。
「月の最初の 06:00」が必要ですが、検索結果が一致しません - 推論を伴う検証済みの式のセット
「月の最初の 06:00」に対するコピーされた回答は、すべての位置が正当化できる場合にのみ役立ちます。 5 つのフィールドの順序では、`0 6 1 * *` は、分 0、時間 6、月 1 日、毎月、および毎日を意味します。フィールドを読み取ることで、魅力的なサンプルが説明のつかない実稼働依存関係になることを防ぎます。
ここでの例は、ToolAcre のパーサーとテストによって実行される文法の範囲内に留まります。これらはスケジュールの断片であり、完全なジョブ定義ではありません。ブラウザはそれらを記述し、選択したゾーン内の将来のウォールクロックの候補を表示できますが、それらを最終的に使用する可能性のあるコマンド、権限、またはホストは知りません。
毎分、5 分ごと、毎時間 — * * * * *、*/5 * * * *、0 * * * *、および先頭の 0 が重要である理由
`* * * * *` は、各時間および日付の各分の値を選択します。 `*/5 * * * *` は、55 までの分を 0、5、10 などに絞り込みます。 `0 * * * *` は、ゼロ分のみを選択し、各時間の先頭に 1 つの候補を生成します。したがって、先頭の 0 は 60 分の位置と 1 の差になります。
3 つのフォームはすべて、プリセットまたはテスト済みの構文で表示されます。ステップは分フィールドの下限から拡張されますが、ワイルドカードは 0 から 59 までのすべての許容値を拡張します。プレビューを使用して、今後の実行を厳密に検査します。時間を列挙できるという理由だけで、このツールが繰り返しプロセスを開始したと推測しないでください。
毎日 1 回、1 日 2 回 — 30 2 * * * および 0 6,18 * * *
毎日の 02:30 は `30 2 * * *`: 分 30 と時間 2 で、制限のないカレンダー フィールドがあります。 1 日 2 回、06:00 および 18:00 は `0 6,18 * * *` です。カンマは 2 つの時間値を結合しますが、分は固定のままです。どちらも、時間リストを 2 行で複製するよりも明示的にすると、確認しやすくなります。
選択したタイムゾーンにより、同じ壁時計フィールドに表示される時刻が変わります。 ToolAcre は、各候補をそのゾーン内のローカル ウォール タイムとして計算し、順方向クロックの変更中に存在しないローカル時間を省略します。そのプレビュー動作はこのツールに属します。この記事は、これをすべてのデーモンに関する約束として一般化するものではありません。
平日と週末 — 0 8 * * 1-5 および 0 10 * * 0,6 (日曜日の番号付けに関する注意事項あり)
平日の 08:00 は `0 8 * * 1-5` で、週末の午前 10:00 は `0 10 * * 0,6` です。このパーサーは日曜日を 0 または 7 として受け入れ、両方を同じ値に正規化します。名前もサポートされているため、拡張された曜日を変更せずに `MON-FRI` を `1-5` に置き換えることができます。
OR 結合が必要でない限り、同時に日付を設定することは避けてください。 `0 8 1 * 1-5` は、平日の 1 日のみを意味するものではありません。これには、毎月の最初とすべての平日が含まれます。ジェネレーターは、両方の日付フィールドが制限され、結果の文に「または」が挿入されるたびに警告を出します。
毎月、四半期、および毎年 — 0 6 1 * *、0 6 1 1,4,7,10 * および 0 0 1 1 *
毎月 06:00 の最初の日は `0 6 1 * *` です。四半期ごとの 1 月、4 月、7 月、10 月の初日は `0 6 1 1,4,7,10 *` です。毎年 1 月 1 の午前 0 時に実行されるのは `0 0 1 1 *` です。これは、サポートされている `@yearly` および `@annually` エイリアスで使用される拡張でもあります。
これらの例では、選択した月ごとに存在する日を使用します。 ToolAcre は、不可能な組み合わせを構文的に正当なものとして受け入れますが、たとえば、日 30 が 2 月とのみペアになっている場合は警告します。 2 月 29 にうるう年の警告が表示されます。したがって、カレンダーの有効性は、1 つの一般的な無効メッセージの背後に隠されるのではなく、フィールド文法とは別に表面化されます。
最終日のスケジュールは、サポートされている 5 フィールド演算子では表現できません
サポートされている文法には最終日演算子がありません。 `L` は翻訳されずに拒否され、31 日は 30 日のある月または 2 月をカバーできません。ワークブックではコマンド側の日付テストが提案されていますが、このリポジトリはコマンドの実行や検証を行わないため、この記事ではサポートされているジェネレーター機能としてその回避策を示していません。
「毎月末日」は、この表現言語を超える要件として扱います。実際のターゲットによって文書化されたスケジューラまたはコマンド戦略を選択し、そこでテストします。 ToolAcre は、その決定に関する通常の 5 つのフィールドには引き続き役立ちますが、検証の成功により、パーサーが実装していない演算子を作成することはできません。
秒フィールドと外部演算子はこのパーサーによって拒否されます
このルートの従来の式には、秒や年の位置がありません。 6 つのフィールドは、秒指向のスケジューラ スタイルに関するガイダンスにより拒否されます。また、パーサーは、`?`、`#`、`L`、および `W` も拒否します。これは、その値リーダーが数値、サポートされている 3 文字の名前、範囲、カンマ、スラッシュ、およびワイルドカードのみを受け入れるためです。
したがって、1 分未満の要件をここで表すことはできません。また、別のスケジューラの式が、見た目が似ているという理由だけで同等であると宣言することもできません。位置をカウントし、オペレーターのサポートを確認し、目的の文法を使用して目的のセットを再構築します。省略されたセマンティクスは、偶然の近似ではなく、明示的なギャップのままである必要があります。
要点: これら 10 個から構築し、Crontab ジェネレーターを使用して 1 つを調整し、結果を読み戻します。
各トークンに理由があると、共通のスケジュールがより安全になります。ゼロは境界を示し、カンマは代替名を示し、範囲には両端が含まれ、星はフィールドを開きます。プリセットには、毎分、15 分ごと、毎時、毎日、平日のオフィスアワー、日曜、月次、年次フォームなど、いくつかの開始点が用意されています。
最も近いプリセットを調整し、生成された文を読み取り、マシンの対象ゾーンで次の 5 回のスキャンを行います。このシーケンスは、ブラウザ外での展開を維持しながら、式の意図を検証します。良い例は、コピーの準備ができているだけではありません。十分に小さいため、別のレビュー担当者がすべてのフィールドが存在する理由を再構築できます。