[ 生活需要仪式感 ]

0%

Linux定时任务功能Crontab

Crontab是Linux上定时执行工具,提供计时器功能,让用户能够在特定时间内执行预设的命令。而且PHP的cli模式配合这个听说也有奇效喔~

服务启动

1
2
3
4
5
6
7
8
9
10
service crond start           //启动服务 
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置

//查看crontab服务状态
service crond status
//查看是否在系统启动时自动启动
在脚本/etc/init.d/rc.local的末尾加上
/sbin/service crond start

命令配置

命令说明

1
2
3
4
crontab -u     //把cron服务器设定给指定用户
crontab -l //列出某个用户的cron服务详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务

例子

1
2
3
root查看自己的cron设置:`crontab -u root -l`.
root删除peter的cron设置:`crontab -u peter -r`.
peter要编辑自己的cron设置:`crontab -e`.

语法格式

定时执行的cron服务最重要就要控制什么时间执行,故crontab的设定格式有2部分,前一部分是对时间的设定,后一部分是要执行的命令。

小时 星期 命令
0~59 0~23 1~31 1~12 0~6 command

Ps.星期的0表示周日,一般一行对应一个任务

同时,为了对时间有精确的把握,有以下几个特殊符号:
*:取值范围内的数字
/:每
-:某个数字到某个数字的区间
,:分开的离散数字

例子

1
2
3
4
5
6
7
8
9
5  * *  * * ls :每小时的第5分钟执行一次ls命令
30 5 * * * ls :每天的5:30执行一次ls命令
30 8 10 * * ls :每个月10号的8:30执行一次ls命令
30 6 * * 0 ls :每个星期天的6:30执行一次ls命令
---高阶版---
30 3 10,20 * * ls :每月10号和20号的3:30执行一次ls命令
30 8-11 * * * ls :每天的8-11点的第30分执行一次ls命令
30 6 */15 * * ls :每个月每隔10天,6:30就执行一次ls命令
50 7 * * * root run-parts /etc/cron.daily:每天7:50以root身份执行/etc/cron.daily目录中所有的可执行文件

Ps.run-parts参数表示,执行后面目录中的所有可执行文件

另一种设置Cron的方法

因为每次编辑完某个应用的cron后,cron自动在/var/spool/cron下生成一个与用户名同名的文件,而该用户的所有cron设定都保存在这个文件中,该文件只能用crontab -e来编辑,不用直接编辑。cron服务启动后每一分钟都会读一次这个文件,所以文件修改后不需要重新启动cron服务。

同时Cron服务每分钟读取完/var/spool/cron后,还会读取/etc/crontab这个文件,所以还有另外一种简单粗暴设置Cron的方法就是,在命令行下修改/etc/crontab这个文件。

Ps.编辑/etc/crontab是针对系统级别的设定

[via cnblog] [via csdn]