红联Linux门户
Linux帮助

linux crontab使用失效注意事项

发布时间:2017-01-15 09:59:35来源:linux网站作者:邻家大叔HOME
crontab 是Linux中内嵌的一个定时执行脚本的工具,使用这个工具,会为我们省去很多麻烦。
但是,我在使用crontab的时候总会遇到一些问题,导致原本可以执行的文件,在crontab中没有效果。
下面介绍下我的解决方法:
 
1,首先,我执行的是Python文件,例如文件地址为 /opt/quote_pub/menghuang/xinalng_spider/main.py 的python文件
我们最好创建一个shell文件来执行这个python文件,这样能更加方便的集成任务,
 
2,我创建了一个文件名字叫/opt/quote_pub/menghuang/xinalng_spider/run.sh 的文件和刚才的python文件在同一目录
#!/bin/sh  #指定shell执行源
cd /opt/quote_pub/menghuang/xinalng_spider/  #指定shell文件的执行目录(这个必须添加)
/usr/local/bin/python main.py >>run.log      #特别注意,python一定要用绝对路径 ,然后运行python文件,打印run.log文件,查看我们是否成功执行
 
3,现在shell文件创建好了以后我们开始运行crontab
(1)service crond restart   
service crond status  
#测试一下crontab是否在运行,正常显示结果 crond start/running
(2)注意: 一般情况下我们在添加crontab任务的时候都会输入 crontab -e 这句话,但crontab是不会帮我们指定当前用户的执行环境的所以你需要先知道你当前的执行用户名,使用 who 获取当前用户名:
xin pts/0        2017-01-12 15:24 (---.---.-.---)
xin pts/1        2017-01-10 14:24 (---.---.-.---)
xin pts/2        2017-01-10 14:25 (---.---.-.---)
这是我的结果,我当前的用户名为xin,那么我们添加crontab任务的执行语句就需要改为 crontab -uxin -e ,这样就会切换到我们当前的执行环境。
(3)然后我需要在每晚19点40执行这个文件,就输入
40 19 * * *  /bin/sh  /opt/quote_pub/menghuang/xinalng_spider/run.sh
或者我们在测试的时候需要他五分钟执行一次
*/5 * * * *  /bin/sh  /opt/quote_pub/menghuang/xinalng_spider/run.sh
注意:sh执行命令也需要绝对路径。
(4)最后我们只需要看一下run.log文件有没有被创建,就能知道crontab有没有执行了(在之前的python执行语句,我们重定向了log文件)
(5)在执行的时候我们通常会碰到一些错误
例如:
Jan 12 16:14:01 test crond[1206]: (tmp.XXXXsD9GXo) ORPHAN (no passwd entry)
Jan 12 16:14:01 test crond[1206]: (tmp.XXXXrq7zAc) ORPHAN (no passwd entry)
或者:
Jan 12 16:10:01 test CROND[16188]: (root) CMD (/usr/lib64/sa/sa1 1 1)
其实有这些错误,crontab也能成功执行。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/27822.html