之前了解过一点crontab,前段时间比较闲,就熟悉了一下,今天总结记录一下。
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行。
什么时候需要用到crontab呢?如下就是几个很好的应用场景
- 每分钟需要执行一个程序检查系统运行状态
- 每天凌晨需要对过去一天的业务数据进行统计
- 每个星期需要把日志文件备份
- 每个月需要把数据库进行备份
安装crontab
在ubuntu系统中的安装如下:
sudo apt-get install cron
时间设置
# 文件格式说明
# ——分钟 ( - )
# | ——小时 ( - )
# | | ——日 ( - )
# | | | ——月 ( - )
# | | | | ——星期 ( - )(星期日=0或7)
# | | | | |
# * * * * * 被执行的命令
注:
- 在“星期域”(第五个域),0和7都被视为星期日。
- 不很直观的用法:如果日期和星期同时被设定,那么其中的一个条件被满足时,指令便会被执行。
- 前5个域称之分时日月周,可方便个人记忆。
从第六个域起,指明要执行的命令。
crontab命令
crontab [ -u user ] [ -i ] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
crontab例子
每晚21:30重启nginx
30 21 * * * service nginx restart
每月1, 10, 22日的4:45重启nginx
45 4 1,10,22 * * service nginx restart
每月1到10日4:45重启nginx
45 4 1-10 * * service nginx restart
每隔2分钟重启nginx服务器
*/2 * * * * service nginx restart
1-59/2 * * * * service nginx restart
晚上11点到早上7点之间,每隔一小时重启nginx
0 23-7/1 * * * service nginx restart
每天18:00到23:00之间每隔30分钟重启nginx
0,30 18-23 * * * service nginx restart
0-59/30 18-23 * * * service nginx restart
小结
- *表示任何时候到匹配
- 可以用"A,B,C"表示A或者B或者C时执行命令
- 可以用"A-B"表示A到B之间时执行命令
- 可以用"*/A"表示每A分钟(小时等)执行一次命令