crontabはスクリプトを起動しません

crontabはスクリプトを起動しません

私のcrontabに問題があります。 cronは私のスクリプトの1つを起動しません。

これは私のcrontab(ルート)の上部です。

SHELL=/bin/bash

#---------------------------------------
# Items availability
#---------------------------------------


# Daily offer import + daily sync everything
30 7 * * *      /var/www/import/download_offers.sh > /var/logs/download_offers_cron.log

# Updates availability
# 7:45 mass update happens
*/5 0-6 * * *   /var/www/import/check_availability.sh
0,5,10,15,20,25 7 * * * /var/www/import/check_availability.sh
*/5 8-23 * * * /var/www/import/check_availability.sh

#---------------------------------------
# Sales import + sync
#---------------------------------------

# Import EBAY + WWW sales. Run sales cleaner
*/15 * * * *    /var/www/import/import_all.sh
*/5 * * * *     /var/www/import/import_www.sh
55 13 * * *     /var/www/import/import_all.sh
58 13 * * *     /var/www/import/import_www.sh

... more stuff 7KB total ...

長い間完璧に動作していましたが、先週にラインを再起動した後

30 7 * * *      /var/www/import/download_offers.sh > /var/log/download_offers_cron.log

やめなさい。 download_offers.shの内容:

#!/bin/sh

echo "Working..."

echo "Download offers started" > /var/log/import/OFFER_START.log

... some private stuff ; just bunch of wget's and echo's ...

ファイルが/var/log/import/OFFER_START.log生成されませんでした。

私は今まで何を試しましたか

  • 時間を7時30分と8時に変更しました(元は7時45分でした)
  • 追加しましたが、> /var/logs/download_offers_cron.logファイルはまだ作成されていません。
  • ルートメールを検索しましたが、スクリプトの1つを除いてすべてが開始されました。
  • ファイルは+ x実行可能ファイルです。

既知のバグがありますか?メールに加えてcrontabをデバッグするための他のオプションはありますか?スクリプトがまったく起動しないのはなぜですか?先週再起動したらうまくいきました…

私が心を失うのを手伝ってください

編集する:

CentOSバージョン6.6(最終バージョン)を使用しています。

これは/var/log/cronです。

Mar 10 07:30:01 serverpro1 CROND[11291]: (root) CMD (/var/www/import/download_offers.sh > /var/logs/download_offers_cron.log)

cronエントリは大丈夫だと思いますが、/var/log/download_offers_cron.logファイルはありませんか?

答え1

また魔法のように働きます。

私が変えた唯一のこと

30 7 * * *      /var/www/import/download_offers.sh > /var/logs/download_offers_cron.log
                                                             ^^ here

到着

30 7 * * *      /var/www/import/download_offers.sh > /var/log/download_offers_cron.log
                                                             ^^ here

エラーが発生し、スクリプトがまったく機能しないのはなぜですか?全然知らない

もともとスクリプトが機能しなくなった理由は、解けない謎です。

答え2

cron ジョブについては、/var/log/syslog ファイルを確認してください。ログで「cron」という単語を見つけて、エラーが何であるかを確認してください。以下のコマンドで同じ内容を確認してください。

grep -i cron /var/log/syslog

そうでなければ、あなたが言及したすべてが大丈夫です。

答え3

crontabではbashを使用するように言われていますが、スクリプトを実行すると実際に 'sh'シェルを再利用するため、すべての環境変数が失われます。先週、この問題が発生しました。私の問題は、スクリプトがcronで実行されている場合はパス変数がありませんが、手動で実行するとスクリプトが正しく実行されることです。

スクリプトの上部にある #!/bin/sh の後にこれを実行してテストできます。

echo $PATH
echo $path
sleep 10

スクリプトがcronによって実行されるとき。 「sh」がどのパスを使用したか覚えていませんので、どちらもエコーしてください。

スクリプトに「sh」を使用しないことをお勧めしますか?

または、実行する各ユーティリティのユーティリティ、各入力、および各出力ファイルのフルパスを入力します。

したがって、スクリプトが次のように言う場合:

wget ...

フルパスに置き換えることができます。

/usr/bin/wget ...

それとも正しいパスが何であれ。

(まだコメントできないので返信できません。申し訳ありません。)

答え4

これはタイプミスのようです。
最初のスクリプトではを使用しましたが、/var/log 新しいスクリプトではです/var/logs。 Logは標準ディレクトリですが、logを使用しているようです。S

関連情報