私はpythonスクリプトを毎分実行するために取得しようとしているダーツをたくさん投げました。そのため、「機能する可能性のある最も単純なこと」を実行するだけに簡略化すると思いました。 1分に1回(私はdebian/testingを実行しています)。
/etc/cron.d/perminute
に1行のファイルを作成しました。
* * * * * /bin/touch /home/me/Ding_dong
それはrootによって所有され、実行可能です(どちらかが重要かどうかは不明です)。そして私はしました:
Sudo service cron reload
そして、座ってls -ltr
をホームディレクトリ(/home/me
)で何度も実行します。しかし、私のDing_dongファイルは表示されません。 Sudo /bin/touch /home/me/Ding_dong
を実行すると、すぐに表示されます。
明らかに、ここで愚かな何かが欠けています。
例では、/etc/cron.d/
または/etc/crontab
にcron構成を追加するときに、コマンドを実行するコンテキストのユーザー名を追加する必要があります。
* * * * * root /bin/touch /home/me/Ding_dong
そして、私からのヒント:ls -ltr
を何度も実行する必要はありません。watch -n 5 "ls -ltr"
を使用するだけで、5秒ごとにコマンドが実行されます(または、5をあなたが欲しい)。
新しいcron
ジョブを作成するには、ジョブを実行するユーザーとしてcrontab -e
を実行する必要があります。次に、表示されるエディタウィンドウに関連する行を追加します。
* * * * * /bin/touch /home/me/Ding_dong
あなたがそれをしている方法は異なるフォーマットを必要とし、とにかく本当に良い考えではありません。 /etc/cron.d
のCrontabは、形式が少し異なり、実行にユーザー名が必要です。例えば:
* * * * * USERNAME /bin/touch /home/me/Ding_dong
(@VogonPoetLaureateで提案されている)良いトリックは、それらのデバッグに役立つcronジョブの標準エラーをキャプチャすることです。例えば:
* * * * * /bin/touch /home/me/Ding_dong 2>/tmp/error
ここで起こり得る間違いは、how1行のファイルが作成されることです。 buntuドキュメント から:
...行には5つの日時フィールドがあり、その後にコマンド、改行文字が続きます。
たとえば、この作成方法は機能しません。
printf "* * * * * /bin/touch /home/me/Ding_dong" > /etc/cron.d/Ding_dong