1.crontab简介
1.crontab表达式通常用于设定周期性的执行任务或者指令,常用于定时任务的处理
crontab表达式格式为:
minute hour day month week username command,如下图所示:
minute:分钟,取值(0-59)
hour:小时,取值(0-23)
day:日期,取值(1-31)
month:月份,取值(1-12)或者英文缩写:jan,feb,mar,apr等前三个词
week:星期,取值(0-6/1-7)其中Sunday=0 or 7或者sun,mon,tue,wed,thu,fri,sat
username:指明此crontab表达式试用于哪个用户,如果不写默认为系统当前用户
command:代表需要执行的指令或者脚本文件
各个域之间以空格进行分隔,五个域除了能取上述值以外,还支持使用一些特殊字符作为特殊含义
1)*(星号)代表不做特殊处理,指“每一”的意思,如minute域中使用了星号,代表满足其它条件下的每一分钟
2),(逗号)每个域内部多个值之间可以使用逗号进行分隔,代表取多个值,并列存在,如hour域值为3,5代表满足其它条件情况下的3点和5点钟执行指令
3)-(中划线)代表连续取值的意思,如day取值3-7代表满足其它条件下,每个月的第3,4,5,6,7天都执行该指令
4)/(正斜杠)代表时间间隔频率,用于辅助含义,如day取值3-7/2代表每个月的3到7天内每隔2天执行一次,如果day取值*/2代表每个月中每隔2天就执行一次
2.crontab示例如下(默认当前用户):
1)每分钟执行一次command命令
* * * * * command
2)每小时的第10分钟和第30分钟执行一次command命令
10,30 * * * * command
3)奇数月的每周一到周五每20分钟执行一次command命令
*/20 * * */2 1-5 command
4)每晚的20:10分将服务器关机
10 20 * * * shutdown now
5)每天下午15:20运行巡检脚本
20 15 * * * root sh /home/user1/test.sh
3.crontab命令详解
crontab [-u user] file
crontab [-u user] [-l | -r | -e] [-i]
1) -u 代表指定某个用户的crontab文件,用来限定执行权限的,如果不指定默认为当前用户,如果不加file,默认接受标准输入(键盘等)
2)-l 显示指定用户下的crontab文件,如果不指定用户代表当前用户
3)-r删除指定用户下的crontab文件,如果不指定用户代表当前用户
4)-e编辑指定用户下crontab文件,如果不指定用户代表当前用户
5)-i代表删除指定用户下crontab文件时给予确认提示
可以创建一个crontab文件,例如time_execute,文件内容如下:
10 20 * * * shutdown now
然后使用命令crontab time_execute将该文件提交给crond服务,该服务加载该文件,然后该文件指令开始生效,代表每天晚上20:10分服务器自动关机
4.crontab服务
1)安装crontab服务
yum install crontabs
2)查看crontab服务的状态是否正常
service crond status
3)停止/启动 crontab服务
service crond stop/start
4)重启crontab服务
service crond restart
5)重新载入配置
service crond reload
5.crontab加入开机自启动
1)查看crontab是否已加入开机自启动
ntsysv
2)加入开机启动
chkconfig --level 35 crond on
或者
将service crond start启动命令加入到/etc/rc.local中