linux配置cron定时执行脚本首行一定要明确指定解释程序吗,cron首行,单独执行 python2
linux配置cron定时执行脚本首行一定要明确指定解释程序吗,cron首行,单独执行 python2
单独执行 python2.7 /x/test.py 一切正常
crontab -l30 12 * * * python2.7 /x/test.py
cron定时执行脚本时,test.py没有执行
如果在test.py的第一行加上:
#!/usr/local/bin/python2.7
test.py定时正确执行
为什么出现这种情况?
检查是否是用 root 权限设置的 crontab。
另建议在crontab里使用完整路径。
你这错误跟我在 rc.local 里犯的一样:/usr/local/bin 不在 $PATH 里。你写在 shebang 里的是绝对路径,但是 crontab 里没写绝对路径。你去看一下 cron 给你发的报错邮件吧(通常默认在 /var/mail 下)。如果你没有安装某个 sendmail 程序就安装一个,不然两眼摸黑地调试 cron 里的程序很难的。
大家都会想到环境变量的问题,可惜没有去读读文档,到底crontab有哪些默认的环境变量。
如果题主你已经在test.py上加入了#!/usr/local/bin/python2.7这一句的话,那么你的crontab定时任务定义只需要:
30 12 * * * /x/test.py
因为脚本第一行指定解释程序后已经是可执行性脚本(文件)了,就不再需要python2.7执行命令了。
如果不修改test.py,也可以给python2.7执行命令指定路径:
30 12 * * * /usr/local/bin/python2.7 /x/test.py
但是什么时候需要指定执行命令的路径呢?还是读读文档吧。
crontab(5) - Linux man page
几个环境变量已经自动设置好了的,如当前的SHELL,SHELL=/bin/bash,这个crontab所有者的HOME目录是从/etc/passwd文件中读取的。除了默认的环境变量外,其他环境变量就需要用户自己设置了,为了找到python2.7,就要设置PATH=/user/local/bin了,写法应该是这样的:(没有测试不保证正确)
30 12 * * * PATH=/usr/local/bin python2.7 /x/test.py
或许是cron没有那个$PATH,一般cron里的命令都用完整路径。
编橙之家文章,
相关内容
- 如何控制WEB开发服务器数据下载数据量过大问题,web过
- Python如何得到网页审查元素的代码,python审查,网页源代
- python删除dict空值元素报错RuntimeError原因,dictruntimeerr
- 是python的scrapy框架,xpath中可否以插入正则表达式,scr
- 求Python服务器后台间隔自动运行时间设置方法思路,
- django满足条件再输出的列表显示怎么写?,django怎么写
- 列表合并之后原相同数据不被覆盖应该写python源码,
- python新手问httplib和urllib2有哪些不同,httpliburllib2,想从
- python找到最近的字符要如何用正则匹配,python字符匹配
- 大家一起来讨论抽用正则取优酷视频并生成播放器的问
评论关闭