2

正しく動作していない cron ジョブをデバッグしようとして苦労しています。cron ジョブは、rar ファイルを unrar する必要があるシェル スクリプトを呼び出します。これは、スクリプトを手動で実行すると正しく機能しますが、何らかの理由で cron 経由では機能しません。絶対ファイル パスを使用しており、パスが正しいことを確認しました。なぜこれが起こっているのか、誰かが何か考えを持っていますか?

4

3 に答える 3

18

ええと、あなたは絶対パスを使用したと既に言ったので、一番の問題は処理されます。

次に確認するのは権限です。cron ジョブはどのユーザーとして実行されますか? 必要なすべての権限がありますか?

次に、ちょっとしたトリック: 失敗したシェル スクリプトがあり、それがターミナルで実行されない場合、その出力をいくつかのファイルにリダイレクトするのが好きです。スクリプトの最初に、次を追加します。

exec &>/tmp/my.log

これにより、STDOUT と STDERR が にリダイレクトされます/tmp/my.log。次に、次の行も追加することをお勧めします。

set -x

これにより、実行しようとしているコマンドと、どのネストレベルで bash が出力されます。

ハッピーデバッグ!

于 2010-08-31T18:13:10.257 に答える
2

cronジョブが失敗したときに最初に確認することは、実行しようとしているスクリプトが完全な環境を利用できるかどうかを確認することです。つまり、cronを介して実行されるジョブは、ログイン環境に関連付けられていないことを意味する分離されたプロセスとして実行されることを理解する必要があります。したがって、手動で実行するときに機能するcronジョブをデバッグしようとするときは常に、手動で実行するときに使用できるのと同じ環境がcronjobで使用できることを確認する必要があります。これには、PATH設定、およびスクリプトが依存する可能性のあるその他のenvvarが含まれます。

于 2010-08-31T18:02:48.833 に答える
0

私にとって、問題は crontab の別のシェル インタープリターでした。

于 2013-08-29T09:58:19.097 に答える