首页 > 代码库 > Linux的学习--crontab

Linux的学习--crontab

之前了解过一点crontab,前段时间比较闲,就熟悉了一下,今天总结记录一下。

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行。

什么时候需要用到crontab呢?如下就是几个很好的应用场景

  • 每分钟需要执行一个程序检查系统运行状态
  • 每天凌晨需要对过去一天的业务数据进行统计
  • 每个星期需要把日志文件备份
  • 每个月需要把数据库进行备份

安装crontab

在ubuntu系统中的安装如下:

sudo apt-get install cron

 

时间设置

# 文件格式说明#  ——分钟 (0 - 59)# |  ——小时 (0 - 23)# | |  ——日   (1 - 31)# | | |  ——月   (1 - 12)# | | | |  ——星期 (0 - 7)(星期日=0或7)# | | | | |# * * * * * 被执行的命令

注:

  1. 在“星期域”(第五个域),0和7都被视为星期日。
  2. 不很直观的用法:如果日期和星期同时被设定,那么其中的一个条件被满足时,指令便会被执行。
  3. 前5个域称之分时日月周,可方便个人记忆。

从第六个域起,指明要执行的命令。

 

crontab命令

    crontab [ -u user ] [ -i ] { -e | -l | -r }        (default operation is replace, per 1003.2)    -e    (edit users crontab)    -l    (list users crontab)    -r    (delete users crontab)    -i    (prompt before deleting users 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分钟(小时等)执行一次命令

Linux的学习--crontab