web-dev-qa-db-ja.com

cronエントリのテスト実行

最近cronジョブを追加しましたが、コマンドを与える際にパスを間違えたため、ジョブが成功しませんでした。 cronの変更をテストする方法はありますか?

コマンドラインからコマンドを実際にコピーして貼り付けたことに注意してください。

32
Karthick S

この質問は 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'
27
Joshua

Cronジョブをテストする場合、通常、間隔を非常に低く設定し、ログを注意深く監視します。エントリが正しいと確信したら、間隔を正しい値に戻します。

たとえば、2分ごとにジョブを実行します。

*/2 * * * * echo "Hello World"

そして、私はtail -fログファイル(/var/log/syslogon debian)。

46
Martin Olsen

ジョシュアの答えは私にはうまくいきません。 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

回答を修正したりコメントを追加したりするのに十分な担当者がいません...

6
Fuujuhi

コマンドcrontab -eを使用すると、vimエディターが開きます。ここで行う必要があるのは、* * * * * /somepath/urscript.shです。日付とスクリプトのパスの間に適切なスペースがあることを確認してください。/var/spool/mailをチェックインすると、スクリプトの実行またはエラーの完全な記録が得られます。テストの方法はありません..しかし、ur sh urscript.shが動作する場合、cronタブは手動で行うこととまったく同じことなので問題ありません。

0
Amit Bhat