1、命令简介
crontab: 计划命令在指定的时间或时间间隔执行命令。
2、命令用法
crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }crontab [ -u user ] [ -i ] { -e | -l | -r }crontab [ -u user ] [ -l | -r | -e ] [-i] [-s]
crontab格式:
* * * * * Command_to_execute| | | | | | | | | Day of the Week ( 0 - 6 ) ( Sunday = 0 )| | | || | | Month ( 1 - 12 )| | || | Day of Month ( 1 - 31 )| || Hour ( 0 - 23 )|Min ( 0 - 59 )
* * * * * Command_to_execute| | | | | | | | | Day of the Week ( 0 - 6 ) ( Sunday = 0 )| | | || | | Month ( 1 - 12 )| | || | Day of Month ( 1 - 31 )| || Hour ( 0 - 23 )|Min ( 0 - 59 )
说明:
*
:指定字段的所有可能值。每小时或每天。
,
:指定一个值列表,例如,"1,3,4,7,8"。
-
:指定一个值范围,例如,1-6,相当于“1、2、3、4、5、6”。
/
:可以用来跳过给定数量的值。例如,小时时间域中的*/3
等于 "0、3、6、9、12、15、18、21" ;*
指定了每小时,但/3
表示只有第一、第四、第七…使用由*
给出的这些值。
cron将向用户发送它运行的命令的所有输出,为了消除这种情况,将输出重定向到一个日志文件或/dev/null。
3、命令描述
crontab是英文“cron table”的简写。该命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
Linux下的任务调度分为两类,系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。/etc/crontab
文件是系统任务调度的配置文件。用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab
工具来定制自己的计划任务。所有用户定义的crontab
文件都被保存在 /var/spool/cron
目录中。其文件名与用户名一致。
如果给出一个-u
选项,它指定要调整crontab的用户的名称。如果没有给出这个选项,crontab会检查“你的”crontab,即执行命令的人的crontab。
注意:su
可能会使crontab感到困惑,如果在su中运行,为了安全起见,应该始终使用-u
选项。cron文件用于从一些命名文件或标准输入安装一个新的crontab,如果伪文件名'-
'是给定的。
4、命令选项
选项 | 描述 |
-e | 编辑该用户的计时器设置 |
-l | 列出该用户的计时器设置 |
-r | 删除该用户的计时器设置 |
-u | 指定要设定计时器的用户名称 |
--help | 显示帮助信息 |
1)要在crontab中安装或更新job,请使用-e选项
$ crontab -e
2)要列出crontab条目,请使用-l选项
$ crontab -l
3)要从crontab脱离作业,请使用-r选项
$ crontab -r
4)要从Crontab确认卸载作业,请使用-i选项
$ crontab -i -r
5)要将selinux安全性添加到crontab文件,请使用-s选项
$ crontab -s
6)要编辑其他用户Crontab,User -U选项并指定用户名
$ crontab -u username -e
7)要列出其他用户crontab条目
$ crontab -u username -l
5、使用示例
1)每天23.59运行/usr/bin/sample.sh并不输出信息
59 23 * * * simon /usr/bin/sample.sh > /dev/null 2>&1
2)每天在下午8点(20:00)运行sample.sh
0 20 * * * sample.sh 1>/dev/null 2>&1
3)每周二到周六凌晨1点45分(01:45)运行sample.sh
0 1 * * 2-7 sample.sh 1>/dev/null 2>&1
4)在08:30运行Sample.sh,09:30 12:30和14:30
30 08,09,12,14 * * * sample.sh
5)每天凌晨2点运行sample.sh(这在日常备份文件/数据库等情况下被使用)
0 2 * * * sample.sh
6)每天凌晨5点和下午5点运行sample.sh
0 5,17 * * * sample.sh
7)每分钟运行sample.sh
* * * * * sample.sh
8)每个星期天在下午5点运行样本。
0 17 * * sun sample.sh
9)每隔10分钟运行sample.sh。
*/10 * * * * sample.sh
10)在指定的月份运行sample.sh。
* * * jan,may,aug * sample.sh
11)在指定日运行sample.sh。
0 17 * * sun,fri sample.sh
12)每个月的第一个星期天运行sample.sh
0 2 * * sun [ $(date +%d) -le 07 ] && sample.sh
13)每四个小时运行sample.sh
0 */4 * * * sample.sh
14)每周日和星期一运行sample.sh
0 4,17 * * sun,mon sample.sh
15)每30秒运行sample.sh
* * * * * sample.sh* * * * * sleep 30; sample.sh
16)使用单个cron运行多个作业
* * * * * sample1.sh; sample2.sh
17)每年运行sample.sh(@eearly)
@yearly sample.sh
18)每月运行sample.sh(@monthly)
@monthly sample.sh
19)每周运行sample.sh(@weekly)
@weekly sample.sh
20)每天运行sample.sh(@daily)
@daily sample.sh
21)每小时运行sample.sh(@hourly)
@hourly sample.sh
22)在系统重新启动时运行sample.sh(@reboot)
@reboot sample.sh