使用crontab执行py脚本出错

发布于 2022-09-04 04:36:07 字数 1561 浏览 11 评论 0

最近使用centos6.8的crontab定时执行一个py脚本没有得到实际单独运行的效果

代码https://github.com/ansionfor/...

crontab -e 设置
clipboard.png

脚本单独运行效果
clipboard.png

crontab 日志有记录每分钟运行了py脚本
clipboard.png

crontab处于启动状态
clipboard.png

脚本的作用是保存某网站的文章到我自己远程mysql数据库中,但我测试了几天,发现没有一篇文章是通过这个定时器保存的,都是我自己手动运行脚本保存的文章


但是奇怪的是,我在crontab中放另外一个发送邮件的py脚本,却可以正常运行

代码https://github.com/ansionfor/...

clipboard.png

clipboard.png

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2022-09-11 04:36:17

1.如果题主在xxx.py上加入了#!/usr/local/bin/python2.7这一句的话,那么你的crontab定时任务定义只需要:

0 0 * * * /x/xxx.py

因为脚本第一行指定解释程序后已经是可执行性脚本(文件)了,就不再需要python2.7执行命令了。

2.如果不写第一行指定环境变量,我一般这样写,因为我的环境里有多个版本

0 0 * * * /usr/local/bin/python2.7 /x/xxx.py

来指定python执行的路径,建议你这样写

3.为什么crontab需要指定python路径呢?

官方文档解释是这样:

环境变量已经自动设置好了的,如当前的SHELL,SHELL=/bin/bash,这个crontab所有者的HOME目录是从/etc/passwd文件中读取的。除了默认的环境变量外,其他环境变量就需要用户自己设置了,为了找到python2.7,就要设置PATH=/user/local/bin

4.关于调试

一般cron不执行会发报错邮件,通常默认在 /var/mail 下面

病女 2022-09-11 04:36:17

几经测试得出结论:get_dongqiudi.py的脚本存在问题,那么新问题就是,

这个脚本手动可以执行,为什么在crontab中不生效?


我刚才重新建了一个mkfile.py文件,并放在crontab中每分钟定时执行,可以正常执行

clipboard.png

clipboard.png

clipboard.png

但一旦将代码改为一下,在crontab中就不能运行,只能手动运行

clipboard.png

clipboard.png

以下代码

    #!/usr/local/bin/python3
    import time
    file_name = '文章id'+ str(time.time())
    f = open('/home/'+file_name,'w')
    f.close()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文