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定时设置
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的信息。如果你是其他账号,可以看其他的用户的。

均益就是看了这个日志才知道出错在哪里,原来是脚本执行文件需要绝对路径。当然,你的问题可能不一样,但都可以通过这个日志去查看。通过这4步肯定可以找到问题所在,如果还是找不到,可以在下面留言。

4条评论

  1. 纯洁说道:

    来博主这里学习一下

  2. 工控资料窝说道:

    很有用的东西 赞一个

发表评论