8

cronジョブがどのように機能するかを学び始めてまだ 1 時間しか経っていません。私はcrontab -ecronコマンドを追加するために使用しています。これは次のとおりです。

0/1 * * * * /usr/bin/python /home/my_username/hello.py > /home/my_username/log.txt

crontab -l私のコマンドがそこにあることを確認します。

Hello.py:

#!/usr/bin/python
# Hello world python program
print "Hello World!"

しかし、ログ ファイルには何も表示されません。誰かが私が間違っていることを説明できますか?

4

2 に答える 2

5

実験は、これ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 回実行されます。 */22 分ごとに*/3実行され、3 分ごとに実行されます。これはすべて予想どおりです。

最初のフィールドを0/10/2、またはのいずれかに設定する0/3と、ジョブは正時にのみ実行されます。つまり、単に0.

これは、man ページの説明から私が期待したものではありません。jgritty's answerウィキペディアの引用:

cron の一部のバージョンでは、「0」などの範囲でない場合、「/」の前の値を受け入れない場合があります。別の方法は、ゼロをアスタリスクに置き換えることです。

少なくとも私が使用している Vixie cron のバージョンでは、完全に正しいとは思えません。これ0/1は文句なしに受け入れられますが、私が期待する意味ではなく、特に有用とは思えません。

于 2013-01-13T20:17:04.347 に答える
1

0/1お使いのバージョンの cron に対してフォーマットが間違っているようです。

ウィキペディアでこれを見つけました:

cron の一部のバージョンでは、「0」などの範囲でない場合、「/」の前の値を受け入れない場合があります。別の方法は、ゼロをアスタリスクに置き換えることです。

したがって、キース・トンプソンの答えはうまくいくはずです。

*/1 * * * *

于 2013-01-13T20:23:59.060 に答える