
私の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