crontab(5) マニュアルには次のように記載されています:
分、時、月フィールドが現在時刻と一致し、2つの日付フィールド(日または曜日)のうちの1つ以上が現在時刻と一致する場合、cron(8)によってコマンドが実行されます(「注意」を参照)。以下)。 cron(8) は毎分 cron エントリをチェックします。時間と日付のフィールドは次のとおりです。
field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names)
また、次のように言います。
フィールドは、常に「最初の姓」を表すアスタリスク(*)です。
その例は次のとおりです。
@weekly Run once a week, "0 0 * * 0".
アスタリスクの説明中、「0 0 * * 0」は「0 0 1-31 1-12 0」と同じです。私の質問はなぜ毎日この表現に合わないのですか?文書によると
分、時、月のフィールドが現在時刻と一致する場合少なくとも一つがあるとき2日間のフィールド(月または曜日)が現在の時刻と一致します。
それでは、2019.12.25 00:00と2019.12.26 00:00がこの式に有効な時間ではないのはなぜですか?
どちらも満足しています」分、時間、月のフィールドは現在の時刻と一致します。、月は1~12、分と市は0です。
それでは両方とも満足するでしょう。」2つの日付フィールド(月または曜日)のうちの1つ以上が現在の時刻と一致します。- その月の日付は1〜31なので、1回の満足で十分です。
私はどこで間違っていますか?
答え1
Drubenが述べたように、「下の「参考」参照」を見逃した。
注:コマンドが実行される日付は、「月」と「曜日」の2つのフィールドで指定できます。両方のフィールドが制限されている場合(つまり、
"*"
文字を含まない)、両方のフィールドのいずれかが現在の時刻と一致するときにコマンドが実行されます。
0 0 * * 0
*
日付があるため、両方のフィールドルールは適用されません。日付フィールドの1つがあり、*
他のものではない場合は、フィールド以外の項目が一致する場合に*
のみコマンドが実行されます。*
これは*
数値範囲ルールの例外です。
マニュアルのエラーは次の文です。
*
フィールドには、常に「最初の姓」を表すアスタリスク()を含めることができます。
この例外への言及はありません。
答え2
指定された最後のフィールドただ日曜日のランニング。毎週日曜日が選択されるように、日と月のフィールドが開いています。これは宣伝されたとおりに機能します。