一个有经验的Unix/Linux系统管理员(程序员)肯定知道在后台自动运行日常维护工作重要性。Linux Crontab是一个非常方便、有效的解决方案,它可以在指定的时间或日期周期性的执行固定的命令。
通常,crontab储存的指令被守护进程激活,cron常常在后台运行,每一分钟检查是否有预定的作业需要执行。Crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值。
Crontab命令
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
1
2
3
4
|
crontab -u // 设定某个用户的cron服务
crontab -l // 列出某个用户cron服务的详细内容,如crontab -u root -l
crontab -r // 删除某个用户的cron服务
crontab -e // 编辑某个用户的cron服务,如crontab -u root -e
|
Crontab格式
1
|
MIN HOUR DOM MON DOW [USER] CMD
|
字段
|
描述
|
可选值
|
MIN
|
分钟(Minute)
|
0 ~ 59(*表示全部)
|
HOUR
|
小时(Hour)
|
0 ~ 23(*表示全部)
|
DOM
|
日期(Day of Month)
|
1 ~ 31(*表示全部)
|
MON
|
月份(Month)
|
1 ~ 12(*表示全部)
|
DOW
|
星期(Day Of Week)
|
0 ~ 6(*表示全部)
|
USER
|
用户(User)
|
任意可用用户名,选填(*表示全部)
|
CMD
|
命令(Command)
|
任意可执行的命令(*表示全部)
|
Crontab例子
1、固定时间执行一次命令
1
|
30 08 25 10 * service nginx restart // 10月25号8点30分重启Nginx
|
2、多次执行命令(e.g. 一天执行两次)
1
|
00 11,14 * * * service nginx restart // 每天11:00和14:00重启Nginx
|
3、在某个时间段执行命令(e.g. 只在工作日执行)
1
|
00 09-18 * * 1-5 service nginx restart // 每天(排除星期六/日)的9:00 ~ 18:00的整点重启Nginx
|
4、每分钟执一次行命令
1
|
* * * * * service nginx restart // 每分钟重启一次Nginx
|
5、每10分钟执行一次命令
1
|
*/10 * * * * service nginx restart // 每10分钟重启一次Nginx
|
6、每年的第一分钟执行一次命令
1
|
0 0 1 1 * service nginx restart // 每年重启一次Nginx
|
或者
1
|
@yearly service nginx restart // 每年重启一次Nginx
|
7、每个月的开始执行一次命令
1
|
0 0 1 * * service nginx restart // 每月重启一次Nginx
|
或者
1
|
@monthly service nginx restart // 每月重启一次Nginx
|
8、每天执行一次命令
1
|
0 0 * * * service nginx restart // 每天重启一次Nginx
|
或者
1
|
@daily service nginx restart // 每天重启一次Nginx
|
9、每小时执行一次命令
1
|
0 * * * * service nginx restart // 每小时重启一次Nginx
|
或者
1
|
@hourly service nginx restart // 每小时重启一次Nginx
|
10、只在系统重启的时候执行一次命令
1
|
@reboot service nginx restart // 系统重启的重启一次Nginx
|
11、其他例子
1
|
* 23-7/1 * * * service nginx restart // 23:00到7:00之间,每隔一小时重启Nginx
|
PS: Linux Crontab只能支持到分钟级别,使用Crontab不能实现每秒执行一次任务,不过,在大部分时候我们也不需要每秒执行一次任务,所以Linux Crontab基本上可以满足我们大部分的需求。
Over!