最近cronジョブを追加しましたが、コマンドを与える際にパスを間違えたため、ジョブが成功しませんでした。 cronの変更をテストする方法はありますか?
コマンドラインからコマンドを実際にコピーして貼り付けたことに注意してください。
この質問は serverfaultでさらにいくつかの回答が得られました
以下は Marcoのソリューション の言い換えバージョンです:(最高のエディキテがリンクのみの回答を提供していないか、他の誰かのソリューションをコピーしていないかどうかはわかりません)
一時的なcronエントリで環境ファイルを作成します
* * * * * /usr/bin/env > /home/username/cron-env
次に、その環境を使用してコマンドを実行するrun-as-cron
というシェルスクリプトを作成します。
#!/bin/sh
. "$1"
exec /usr/bin/env -i "$Shell" -c ". $1; $2"
実行許可を与える
chmod +x run-as-cron
その後、次のように使用されます。
./run-as-cron <cron-environment> <command>
例えば.
./run-as-cron /home/username/cron-env 'echo $PATH'
Cronジョブをテストする場合、通常、間隔を非常に低く設定し、ログを注意深く監視します。エントリが正しいと確信したら、間隔を正しい値に戻します。
たとえば、2分ごとにジョブを実行します。
*/2 * * * * echo "Hello World"
そして、私はtail -f
ログファイル(/var/log/syslog
on debian)。
ジョシュアの答えは私にはうまくいきません。 2つの問題:
cron-env
ファイルの変数はエクスポートされません(set -a
が必要です)。
スクリプトはまだ現在のttyに関連付けられています(setsid
が必要です)。
スクリプトrun-as-cron
は
#!/bin/sh
. "$1"
exec setsid /usr/bin/env -i "$Shell" -c "set -a; . $1; $2" </dev/null
回答を修正したりコメントを追加したりするのに十分な担当者がいません...
コマンドcrontab -eを使用すると、vimエディターが開きます。ここで行う必要があるのは、* * * * * /somepath/urscript.shです。日付とスクリプトのパスの間に適切なスペースがあることを確認してください。/var/spool/mailをチェックインすると、スクリプトの実行またはエラーの完全な記録が得られます。テストの方法はありません..しかし、ur sh urscript.shが動作する場合、cronタブは手動で行うこととまったく同じことなので問題ありません。