web-dev-qa-db-ja.com

cronから実行されているシェルスクリプトが実行されていないpython

私はpythonプログラムを持っています、私はそれを異なる変数で毎日実行したいです(CentOSサーバー上で):

#!/bin/sh
/usr/bin/python /root/testing/test.py --variables /root/testing/daily/test1.txt
while [ $? != 0 ]
do
    sleep 60
    /usr/bin/python /root/testing/test.py --variables /root/testing/daily/test1.txt
done

sleep 60は実行されますが、htopにpythonがなく、プログラム出力が空です。検索したときにpythonを/ usr/bin/pythonに変更したので、修正できる答えが見つかりました。また、このpythonコードを実行する前に、古いファイルを更新するだけの小さなものがあります。そのプログラムは実行され、非常に機能します。このシェルプログラムを実行しているときターミナルがshtester.shに入ると動作しますが、問題はcronから実行している場合のみです。

また、Ubuntuサーバーでも機能しました。なにが問題ですか? CentOSではcronスクリプトとシェルスクリプトの動作が異なりますか?

また、私のcrontab構文:

22 23 * * * sh /root/testing/cron-work.sh >> /root/cron1.log
23 23 * * * sh /root/testing/cron-work2.sh >> /root/cron2.log
24 23 * * * sh /root/testing/cron-work3.sh >> /root/cron3.log
14 23 * * * sh /root/testing/cron-work4.sh >> /root/cron4.log
3
Emin Mastizada

パスから実行するのに役立つものは何もありませんでした。すべてのプログラムを/ usr/local/binに移動し、bashとpythonのパスをプログラムに追加しました。これで、シェルでcron-work.shと入力するだけで、プログラムを実行できます。また、crontabの記述でも実行できます。パスのないプログラム名。すべて正常に動作します。

0
Emin Mastizada

次の解決策を試してください。

chmod +x test.py
chmod +x /root/testing/cron-work.sh
chmod +x /root/testing/cron-work2.sh
chmod +x /root/testing/cron-work3.sh
chmod +x /root/testing/cron-work4.sh
echo "22 23 * * * sh /root/testing/cron-work.sh"  >> /root/cron1.log 
echo "23 23 * * * sh /root/testing/cron-work2.sh" >> /root/cron2.log
echo "24 23 * * * sh /root/testing/cron-work3.sh" >> /root/cron3.log
echo "14 23 * * * sh /root/testing/cron-work4.sh" >> /root/cron4.log

chmod +x root/cron1.log
chmod +x root/cron2.log 
chmod +x root/cron3.log 
chmod +x root/cron4.log 

/etc/init.d/crond start  #redhat based servers like centos
/etc/init.d/cron  start  #debian based servers like ubuntu

crontab cron1.log
crontab cron2.log
crontab cron3.log
crontab cron4.log
1
MLSC