Crontab定时任务

Linux系统的crontab是用来定期执行程序的命令,简单总结一下使用方法

首先要说的是,linux任务调度的工作主要分为以下两类:

  1. 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
  2. 个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有信息,这些工作可由每个用户自行设置

系统任务

可以通过编辑/etc/crontab文件给所有角色分配任务,格式如下

1
minute hour day month week user command

字段含义如下

  • minute: 表示分钟(0-59)
  • hour: 表示小时(0-23)
  • day: 表示日期(1-31)
  • month: 表示月份(1-12)
  • week: 表示星期几(0-7,这里的0和7代表周日)
  • user: 执行命令的用户名
  • command: 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件等

在以上各个字段中,还可以使用以下特殊字符:

  • 星号(*):代表所有可能的值,例如minute字段如果是星号,则表示在满足其它字段的制约条件后每每分钟都会执行
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如’1,2,3,6’
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如’2-6’表示’2,3,4,5,6’
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如’0-23/2’表示每两小时执行一次

修改/etc/crontab这种方法只有root用户能用,这种方法更加方便的直接给其他用户设置计划任务,指定执行命令等

用户任务

Linux用户登录时,可以使用crontab -e编辑自身的定时任务,具体的使用方法如下

1
2
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]

命令参数含义

  • -u user:用来设定某个用户的crontab服务,此参数一般由root用户来运行
  • filefile是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab
  • -e:编辑某个用户的crontab文件内容,默认为自身
  • -l:显示某个用户的crontab文件内容,默认为自身
  • -r:删除某个用户的crontab文件,默认为自身
  • -i:在删除用户的crontab文件时给确认提示

此外,可以在/var/spool/cron目录查看用户crontab配置文件

在编辑任务时,和系统任务相比少了角色的配置,其他参数相同

1
minute hour day month week command

举一些栗子

每1分钟执行一次command

1
* * * * * command

每天早上7点半执行

1
30 7 * * * command

每小时的第3和第15分钟执行

1
3,15 * * * * command

在上午8点到11点的第3和第15分钟执行

1
3,15 8-11 * * * command

每隔两天的上午8点到11点的第3和第15分钟执行

1
3,15 8-11 */2 * * command

每个星期一的上午8点到11点的第3和第15分钟执行

1
3,15 8-11 * * 1 command

文章目录
  1. 1. 系统任务
  2. 2. 用户任务
  3. 3. 举一些栗子
|