本文主要解决crontab运行python脚本不生效的问题
问题描述:
我设定了一个crontab执行python脚本,日志里面也有执行的过程,但是结果却不生效;
我的crontab
0 0 * * 0 /user/local/python /app/python/xxx.py
通过筛查:
(1)crontab服务开启
(2)引用的路径都是绝对路径
(3)服务器时间与本地一致
我的日志也有执行的过程;
最终定位原因:
这时如果脚本中会有涉及读取配置文件或者读写文件的动作,一般定时任务都不会执行. 脚本在执行时,由于是通过crontab去执行的,他的执行目录会变成当前用户的家目录,如果是root,就会在/root/下执行.
解决办法:
将执行python的命令放到shell脚本里,然后crontab 定时执行.sh文件
- 新建一个search.sh
#!/usr/bin/bash
cd /app/python
/app/anaconda2/bin/python rtc-monitor-server.py
chomd +x search.sh
0 6 * * 1 /bin/sh /opt/cateSearch/search/search.sh