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