在线课程:https://www.imooc.com/video/4499
读音:
crontab [krɔntæb] 以前读音错误。
linux [ˈlɪnəks] 以前读音错误。
status [ˈstetəs]以前读音错误。
一、应对需求
- 每分钟执行一个程序检查系统运行状态
- 每天凌晨需要对过去一天业务数据进行统计
- 每个日期将日志文件备份
- 每月需要把数据库备份
二、crontab介绍
Crontab是一个用于设置周期性被执行的任务的工具。
被周期性执行的任务称为CronJob
被周期性执行的任务列表称为CronTable
三、安装Crontab
安装:
yum install vixie-cron yum install crontabs
检查cron状态:
service crond status
四、基本组成
配置文件:文件方式设置定时任务
系统服务:crond 每分钟都会从配置文件中刷新定时任务,同时帮我们执行定时任务。
配置工具:crontab 用于调整定时任务
五、配置格式
每晚21:30重启Apache:
30 21 * * * service httpd restart
每月1、10、22日的4:45重启Apache:
45 4 1,10,22 * * service http restart
每月1到10日的4:45重启Apache
45 4 1-10 * * service httpd restart
每隔两分钟(偶数分钟)重启Apache服务器
*/2 * * * * service httpd restart
每隔两分钟(奇数分钟)重启Apache服务
1-59/2 * * * service httpd restart
晚上11点到早上7点之间,每隔一小时重启Apache
0 23-7/1 * * * service httpd restart
每天18:00至23:00之间,每隔30分钟重启Apache:
0,30 18-23 * * * service httpd restart 0-59/30 18-23 * * * service httpd restart
总结:
- *表示任何时间都匹配
- "A,B,C"表示A或者B或者C时执行命令
- "A-B"表示A-B之间时执行命令
- "*/A"表示每A分钟(小时等)执行一次命令
六、crontab工具使用
crontab -u root -l # 查看root用户Cron Table crontab -l # 查看当前用户Cron Table
七、Crontab 配置文件
计划任务既可以通过crontab工具进行编辑,也可以通过/etc/crontab配置进行配置编辑
配置文件路径:/etc/crontab
配置文件格式:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
八、Crontab 日志
cron任务执行的日志信息:
tail -f /var/log/cron
九、常见错误-环境变量
用户bash的环境变量在crontab中通常都不存在。
十、常见错误-命令行操作
1、命令行双引号中使用%时,未加反斜线\
2、第三和第五个域质检存在“或”操作
原因:第三和第五个域,即日与周是“或”的关系,满足一个就会执行
eg1. 四月的第一个星期日早晨1时59分执行a.sh
59 1 1-7 4 0 /root
但是实际是:每月1号到7号每天都会执行,并且当星期日时也会执行,每月会执行10天
改正版:
59 1 1-7 4 * /root
十一、常见错误-分钟设置误用
1、两小时执行一次
0 */2 * * * date
十二、综合案例解析