python - 使用crontab执行py脚本出错
怪我咯
怪我咯 2017-04-18 09:57:14
[Python讨论组]

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

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

crontab -e 设置

脚本单独运行效果

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

crontab处于启动状态

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


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

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
阿神

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 下面

大家讲道理

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

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


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

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

以下代码

    #!/usr/local/bin/python3
    import time
    file_name = '文章id'+ str(time.time())
    f = open('/home/'+file_name,'w')
    f.close()
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号