linux定时执行python脚本的方法以及失败不执行的处理方法
均益最近写了个python脚本,需要每天固定个时间执行一次。在shell窗口下执行是没问题的,但是定时任务的时候老是不执行。如果你也遇到与均益一样的问题,那么可以看一下下面的内容,你肯定可以找到解决方案的。这是均益花不少时间整理出来的。
首页,linux定时任务用到的是crontab,我们来看一下crontab如何使用
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab -l 查看定时任务 crontab -e 编辑或者加入新的定时任务 crontab -d 删除定时任务
crontab定时设置
30 21 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每晚的21:30重启apache 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每月1、10、22日的4 : 45重启apache 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每周六、周日的1 : 10重启apache 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每星期六的11 : 00 pm重启apache * */1 * * * /usr/local/etc/rc.d/lighttpd restart 每一小时重启apache * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 晚上11点到早上7点之间,每隔一小时重启apache 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 每月的4号与每周一到周三的11点重启apache 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 一月一号的4点重启apache
其次,需要注意的是
1、脚本路径最好用绝对路径,如果脚本里面有文件操作,里面的文件也需要用绝对路径
2、python脚本文件的第一行,写明pythoh的路径,#!/usr/local/bin/python
这个可以通过 which python 这个语句找到
3、文件需要有执行权限,linux的文件执行权限内容可以看这篇文章 http://junyiseo.com/linux/327.html
最后,linux定时执行失败的处理方法
如果我们的设置好了定时任务,但是却没有看到执行,可以通过下面的方法逐一查看
1、查看crontab的状态,看crontab是否开启
service crond start 启动 service crond stop 停止 service crond restart 重启 service crond reload 重新加载
2、看定时执行日志,是否有执行文件
cat /var/log/cron
3、看文件是否有执行权限,是否使用绝对路径,这个在上面说过
4、如果上面的都没有问题,那就是脚本的执行问题,这时候就需要看执行的错误日志。这个日志一般在 /var/spool/mail/ 。在这个文件夹里一般有几个用户的信息,我们一般是root这个用户,所以我们看这个root的信息。如果你是其他账号,可以看其他的用户的。