从cron运行的shell脚本没有运行python


3

我有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代码之前,我还有另一个小的,只是更新旧文件,该程序运行并且非常有效。当我从终端输入sh tester.sh运行这个shell程序时它起作用,只有从cron运行时才会出现问题。

它也适用于Ubuntu服务器。 怎么了? cron和shell脚本在CentOS中可以有不同的工作吗?

另外,我的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

2
尝试添加 2> /tmp/cron_log.txt (或任何你想要的名字)到python命令行的末尾。这样,您可以看到是否返回任何错误。
terdon

对不起,错过了编写cron语法。编辑...
Emin Mastizada

谢谢,但也尝试捕获我建议的错误,这应该给我们一些更多的信息。
terdon

在ubuntu中,这个cron命令将从python程序的输出写入日志文件。
Emin Mastizada

我认为可能没有sh或者/ bin / sh可以使用。当服务器完成手动激活的程序时,将测试它。
Emin Mastizada

Answers:


1

请尝试以下解决方案:

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

已经解决了将程序移动到/ usr / local / bin,现在只需要使用cron-work.sh或cron-work2.sh等等就可以了。无需编写程序路径。谢谢你的工作
Emin Mastizada

好的家伙...欢迎你:)
MLSC

你也可以投票给我;)
MLSC

对不起,下次我在超级用户中没有15个声望
Emin Mastizada

0

从路径上没有任何帮助。将所有程序移动到/ usr / local / bin并为bash添加路径,为程序添加python。现在我可以在shell中输入cron-work.sh来运行它们。而且在crontab编写程序的名称没有路径。一切正常。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.