開発者ツール · Crontab ジェネレーター
crontab(5) フィールド: POSIX の仕様と Vixie 拡張機能とは
· 背景
クロン 移植性 検証
すべての cron 機能が標準であるわけではありません。この投稿では、POSIX crontab 仕様で要求されるものと、Vixie cron が追加し、ほとんどの Linux システムが想定する拡張機能 (ステップ、名前、ニックネーム) を分離します。
有効な ToolAcre 式が別のスケジューラでサポートされていない可能性があります
ToolAcre を通過するスケジュールは、すべての cron 実装ではなく、このパーサーを満たしています。移植性はその控えめな言葉から始まります。ルートは、正確に 5 つのフィールドと定義されたトークン文法を受け入れます。ターゲットのアプライアンス、サービス、またはフレームワークは、より少ない、より多い、または構造的に異なるものを受け入れる可能性があります。
ブラウザの結果を 1 つの証拠として保存します: 式、説明、警告、プレビュー ゾーン。導入前に、ターゲットのドキュメントを比較し、無害なテストを実行します。検証が危険になるのは、ローカルのグリーンシグナルが普遍的な互換性の保証に昇格する場合のみです。
リポジトリは POSIX に必要なものを確立していません
ワークブックでは POSIX 要件と拡張機能が分離されていますが、リポジトリ ソースには POSIX 仕様が表示されません。 ToolAcre の動作では、どの機能が標準で義務付けられているかを証明することはできません。したがって、このセクションでは、標準化団体に割り当てずに実装された構文について説明します。
実装される数値範囲は、0–59 分、0–23 時間、1–31 日、1–12 月、および0–7 平日。ワイルドカード、単一の値、包含範囲、カンマ リスト、ワイルドカード ステップ、範囲ステップ、およびステップを伴う単純な開始値はすべて解析され、テストされます。
名前、ステップ、日曜日 7 およびエイリアスは、標準の歴史を主張することなくここに実装されています
月名 JAN から DEC および曜日名 SUN から SAT は大文字と小文字が区別されません。名前は単独で、リスト内に、または範囲内に表示できます。平日 7 は日曜日として受け入れられ、0 に正規化されます。これらは、別の実装がどのように分類するかに関係なく、`parseField` の監視可能なプロパティです。
別名テーブルは、`@yearly`、`@annually`、`@monthly`、`@weekly`、`@daily`、`@midnight`、および `@hourly` を展開します。 `@reboot` は、プレビューするカレンダー スケジュールがないため、意図的に拒否されています。未知のアットマークの単語は、サポートされているリストの命名エラーを受け取ります。
環境割り当てのサポートはこのパーサーの外部にあります
環境の割り当ては、この式文法の一部ではありません。入力ボックスは 1 つのスケジュールを想定しており、サポートされているエイリアスを解決した後、`parseCron` によってスケジュールが 5 つの部分に分割されます。 `KEY=value` 行は、このルートを介して拡張、引用、または移植性についてテストできません。
この省略により、誤った規格の主張が防止されます。完全な crontab ファイルには、式のみのツールでは決して認識されない構成が含まれる場合があります。それらをターゲットに対して個別に確認してください。 ToolAcre の正確なフィールド エラーを、大きなファイル内の無関係な行に関する判断として再利用すべきではありません。
ターゲット文法をチェックし、無害なスケジュール テストを使用します
ターゲットのチェックは、フィールド数と演算子から開始する必要があります。名前、Sunday 7、スラッシュ ステップ、およびアットマーク エイリアスが受け入れられるかどうかを確認します。次に、短期的には無害な観察可能なアクションをインストールし、証拠が取得された後にそれを削除し、ターゲットの結果を意図した表現と比較します。
機密性の高いコマンドを使用したり、まれな年次日付を待ったりして移植性をテストしないでください。文法サポートを区別する最小の安全なプローブを選択してください。 ToolAcre は、そのスケジュールを構築して説明するのに役立ちますが、ターゲットの実行により、ブラウザーが認識できない部分が確立されます。
作業例: ToolAcre の文法に基づくステップ フォームと明示的なリスト
5 分ごとに、ToolAcre は `*/5 * * * *` を受け入れます。また、明示的な分リスト `0,5,10,15,20,25,30,35,40,45,50,55 * * * *` も受け入れます。解析により、両方の分フィールドが同じ 12 値に拡張されるため、次回実行候補は同じ開始時点とゾーンで一致します。
明示的なリストは、ターゲットにステップ構文がない場合のフォールバック候補として機能しますが、このリポジトリはそのターゲットのリストのサポートを保証できません。 ToolAcre で両方の形式を比較して意味上の同等性を確認し、宛先ドキュメントがどちらの形式であるかを確認します。ここでの同等性は移植性の証明ではありません。
6 フィールドの構文は拒否されます。その外部セマンティクスはここでは文書化されていません
6 番目のフィールドは受け入れられません。このエラーは、先頭の秒スタイルが Quartz または systemd のような入力に属しているが、パーサーがそれらの文法を実装していないことを示唆しています。年フィールドや `?`、`L`、`W`、または `#` 演算子はありません。
翻訳を試行する前にフィールドをカウントします。サポートされていない構文にスケジューリングの意味がある場合、見かけ上の 5 フィールドの書き換えは損失を伴う可能性があります。ソース スケジューラのドキュメントとテストを使用して、ToolAcre のターゲット文法で表現できる要件のみを表現します。それ以外のものは、明示的な非互換性のままにする必要があります。
要点: どの機能が拡張機能であるかを把握し、移植性が重要な場合はジェネレーターを使用して両方のフォームを構築および確認します
移植性は比較であり、式に埋め込まれたラベルではありません。 ToolAcre は、十分にテストされた 1 つの側面、つまり 5 つの位置、数値境界、選択された名前、構成可能な範囲/lists/steps、および 7 つのエイリアスを提供します。また、奇形または異質な形式を明確に拒否します。
その契約を使用して正確に推論し、反対側を検証します。このパーサーでは明示的なリストとステップが同等である可能性がありますが、他の場所では 1 つだけが機能します。方言の境界を報告することは、記事が実際に出典としていない標準を援用するよりも実用的です。