最近cronジョブを追加しましたが、コマンドを実行している間にパスを間違えてしまったため、ジョブは成功しませんでした。私たちが行ったcronの変更をテストする方法はありますか?テストランcronエントリ
私は実際にコマンドラインからコマンドをコピーして貼り付けていたことに注意してください。これは、これを引き起こしたばかりのキーストップでした。
最近cronジョブを追加しましたが、コマンドを実行している間にパスを間違えてしまったため、ジョブは成功しませんでした。私たちが行ったcronの変更をテストする方法はありますか?テストランcronエントリ
私は実際にコマンドラインからコマンドをコピーして貼り付けていたことに注意してください。これは、これを引き起こしたばかりのキーストップでした。
この質問もserverfault and has garnered a couple additional answers
は、以下にMarco's solutionの言い換えバージョンである頼まれましたそして、THAを使用してコマンドを実行しrun-as-cron
と呼ばれるシェルスクリプトを作成
* * * * * /usr/bin/env > /home/username/cron-env
に一時的なcronのエントリで環境ファイルを作成します。 t環境です。
run-as-cron <cron-environment> <command>
例えば:
#!/bin/sh
. "$1"
exec /usr/bin/env -i "$SHELL" -c ". $1; $2"
次いで、それをこのように使用されています
run-as-cron /home/username/cron-env 'echo $PATH'
私は自分のcronジョブをテストしたいときに、私は通常間隔を非常に低く設定し、ログを厳密に監視します。エントリーが正しいと確信したら、間隔を元の値に戻します。例えば
、ジョブ実行ごとに2分:
*/2 * * * * echo "Hello World"
そして、私は私のログファイルにtail -f
を実行する(Debianでは/var/log/syslog
)。 (最高ediquiteリンクが唯一の答え提供していないか、他の誰かの解決策コピーされていない場合はわからない)
を :
これは、1分を除いても同様です...しかし、私は、コマンドでコマンドを実行するようにcrontabに依頼する方法があってほしいので、常に1分まで待つ必要はありませんcrontabがコマンドを実行するまで、それが実行されるかどうかを確認するだけです。 – Teekin
最も近いものは '/ bin/sh'を実行することです。次に、cronから直接複雑なコマンドを実行しないでください。代わりに外部スクリプトを使用してください! –
正確には、/ bin/shの実行がcronジョブではなくcronジョブではなく、次回に動作するかどうかを40〜50秒待っているだけであっても、デバッグは非常にイライラします。 – Teekin
ジョシュアの答えは私のためには機能しません。二つの問題: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
が足りません彼の答えを修正したり、コメントを追加する担当者」...
useコマンドのcrontab -e これは、vimのエディタを開きますする必要がありますここでやるべきことは、 * * * * * /somepath/urscript.shです。日付とスクリプトのパスの間に適切なスペースがあることを確認してください。 実行後、/ var/spool /郵便物 スクリプトの実行またはエラーが完全に追跡されます。 テストのためには方法はありません..しかし、ur sh urscript.shが動作する場合、cronタブは問題なく動作します。
あなたはどこからコマンドを実行しましたか? -as-cron **? –
@IgorGanapolskyわかりませんが、上記のシェルスクリプトの名前である可能性があります。 – ptf
"run-as-cronと呼ばれるシェルスクリプトを作成する" – RichardAtHome