crontab是linux系统下用于定时执行任务的小工具,很好用。
================= crontab 使用方法=================
目前我使用过两种方法设定任务:
1:在终端中运行: EDITOR=vim crontab -e (=两旁没有空格) 制定好时间,和任务内容,保存退出后,守护进程会自动更新,不需要重启cron服务, 推荐!
2:打开 /var/spool/cron/crontabs vim打开root文件,可以对root用户设定任务,但这个需要自己手动重启crontab。
重启方法:
1.在系统中有service这个命令时:
这个命令在red hat当中常用,有的linux发行版本中没有这个命令。
$ service crond start //启动服务
$ service crond stop //关闭服务
$ service crond restart //重启服务
2.linux发行版本没有service这个命令时:
/etc/init.d/cron stop
/etc/init.d/cron start
==================错误原因===================
crontab执行失败多数因为路径问题。 举个栗子:
cron命令: 终端中输出crontab -l 可以查看已经设置的任务。
55 14 * * * /usr/bin/python /var/www/hello.py >> /var/www/log/crontab.log
import os
print os.getcwd()</span>
输出: /root
我的任务,是在14点55分的时候,执行python脚本,hello.py,结果定向输出到log目录下的crontab.log, 将当前任务执行路径输出。 结果显示为root。通过输出crontab执行路径,发现crontab执行的时候,默认从当前用户的根目录,我测试时候使用root,所以目录便从/root开始。
所以说,如果在脚本中使用了相关路径, 比如 '../hello.py' 之类,crontab就无法找到文件了,也就无法执行了。
=================解决办法====================
需要的工作: 告诉crontab,程序执行的从哪个目录开始。
对于python来说, 只需要在开头这样写:
import os
os.chdir('/var/www/')
括号中为项目的所在绝对路径。
至此,问题解决!
完