Linux Crontab使用总结

一个有经验的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!

你可能感兴趣的:(linux,crontab)