Linux定时执行任务的方法之一---crontab

2017-04-26 14:10:51

在liunx终端输入 crontab -e,会打开vim界面,输入需要执行的命令和时间即可。

文件中的每行都对应一个命令,分为6个部分,用空格或者制表符分隔,前5个部分是时间,第6个部分是要执行的命令,具体如下:

p1 p2 p3 p4 p5 commands 
p1 分,有效值 0 - 59
p2 小时,有效值 0 - 23
p3 每月的天,有效值 1 - 31
p4 每年的月份,有效值 1 - 12 
p5 每周的天,有效值 0 - 6(0 是周日)
commands 需要执行的脚本,可以是脚本文件的路径
p1 - p5 特殊值
* 表示有效值范围内的所有数字
/ 表示每的意思
- 表示从某个数字到某个数字
, 表示指定的数字集合

举几个例子:

#每5分钟执行一次脚本
*/5 * * * * /tmp/task.sh

#每周一执行脚本
* * * * 1 echo 'work' > /tmp/test.txt

#每天下午6点到10点的30 40 50分 每两个小时执行一次脚本
30,40,50 18-22/2 * * * /task.sh

其他一些命令:

crontab -l  //列出所有执行计划
crontab -r  //删除crontab文件

/sbin/service crond start    //启动服务
/sbin/service crond stop     //关闭服务
/sbin/service crond restart  //重启服务
/sbin/service crond reload   //重新载入配置
/sbin/service crond status   //查看服务状态 

crontab周期内未执行完避免重复执行的方法

* * * * * flock -xn /tmp/test.lock -c 'php /index.php' >/dev/null 2>&1