実験は、これ0/1
が問題であるように思われることを示しています。
0/1
と同等である必要*
があります。に置き換える0/1
と*
、うまくいくはずです。
これが私の実験的なcrontabです:
0/1 * * * * echo 0/1 >> cron0.log
* * * * * echo star >> cron1.log
これは作成しますが、作成cron1.log
しませんcron0.log
。
これを調べて、なぜ機能しないのかを理解しようとします0/1
が、今のところ使用するだけ*
で機能するはずです。
アップデート:
このfoo/bar
構文は、ほとんどの Linux システムと MacOS X で使用されている Vixie cron 実装に固有のものですが、普遍的ではありません。
毎分コマンドを実行する通常の方法*
は、最初のフィールドだけで指定することです。コマンドを 5 分ごとに実行するには、cron でサポートされている場合は、 を指定します*/5
。
マニュアルページの内容は次のcrontab(5)
とおりです。
ステップ値は、範囲と組み合わせて使用できます。範囲の後に を/<number>
指定すると、範囲内での数値の値のスキップが指定されます。たとえば0-23/2
、時間フィールドで を使用して、1 時間おきにコマンドを実行するように指定できます (V7 標準の代替手段は です0,2,4,6,8,10,12,14,16,18,20,22
)。アスタリスクの後にステップも許可されているため、「2 時間ごと」と言いたい場合は、 を使用して*/2
ください。
私は何0/1
を意味するのかさえわかりません。
更新 2:
わかりました、これが私が見つけたものです。
フィールド 2 から 5 がすべて*
である場合、最初のフィールド (分を指定) を に設定する*
と、ジョブは 1 分に 1 回実行されます。 */2
2 分ごとに*/3
実行され、3 分ごとに実行されます。これはすべて予想どおりです。
最初のフィールドを0/1
、0/2
、またはのいずれかに設定する0/3
と、ジョブは正時にのみ実行されます。つまり、単に0
.
これは、man ページの説明から私が期待したものではありません。jgritty's answerのウィキペディアの引用:
cron の一部のバージョンでは、「0」などの範囲でない場合、「/」の前の値を受け入れない場合があります。別の方法は、ゼロをアスタリスクに置き換えることです。
少なくとも私が使用している Vixie cron のバージョンでは、完全に正しいとは思えません。これ0/1
は文句なしに受け入れられますが、私が期待する意味ではなく、特に有用とは思えません。