一、背景
CRONTAB
从定时重复工作中解出来
工作中遇到的困难
每分钟需要执行一个程序检查系统运行状态
第天凌晨需要对过去一天的业务数据进行统计
每个星期需要把日志文件备份
每个月需要把数据库进行备份
二.Crontab简介
Crontab是一个用于设置周期性被执行的任务的工具。
被周期性执行的任务我们称为Cron Job
周期性执行的任务列表我们称为Cron Table
三、Crontab实践
3_1.实践提纲
相关工具
安装并检查Crontab服务
Crontab的基本组成
Crontab的配置文件格式
Crontab工具的使用
Crontab的日志
Crontab觉见错误
3_2.相关工具putty介绍
Putty
一个免费的易用的SSH连接工具
http://wwww.putty.org/
3_3.安装并检查Crontab服务
检查cron服务
— 检查Crontab工具是否安装:crontab -l
— 检查crond服务是否启动:service crond status
安装cron
— yum install vixe-cron
— yum install crontabs
3_4.一个简单的例子
每分钟都打印当前时间到一个日志文件中
– */1**** date >> /tmp/log.txt
3_5.Crontab的基本组成
3_6.Crontab的配置的文件格式
例:
每晚的21:30重启apache
— 30 21 * * * service httpd restart
每月1、10、22日的4:45重启apache
— 45 4 1,10,22 * * service httpd restart
每月的1到10日的4:45重启apache
— 45 4 1-10 * * service httpd restart
每隔两分钟重启Apache服务器
— */2 * * * * service httpd restart
— 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分钟(小时等)执行一次命令
3_7.Crontab工具的使用
查看某用户的计划任务列表
修改某用户的计划任务
查看生成的最终计划任务文件
— /var/spool/cron
3_8.Crontab的配置文件
全局(系统)配置文件
— /etc/crontab
— 注意格式
Root配置文件
— 只有root用户才会把这些内容载入到计划任务表中
3_9.Crontab的日志
/var/log/cron文件保存着cron的任务执行记录
四、Crontab常见错误
环境变量
命令行双引号中使用%时,未加反斜线\
第三和第五个域之间执行的是“或”操作
分钟设置误用
4_1.环境变量
4_2.命令行操作
命令行双引号中使用%时,未加反斜线\
四月的第一个星期日1时29分运行a.sh
— 59 1 1-7 4 0 /root/a.sh
— 59 1 1-7 4 * test `date +\%w` -eq 0 ** /root/a.sh
4_3.分钟设置误用
两个小时运行一次
— * 0,2,4,6,8,10,12,14,16,18,20,22 *** date (错误)
— 0 */2 * * * date (正确)
4_4.Crontab补充
Crontab中最小只能设置到每分钟执行一个命令,如果想每半分钟执行某个怎么做到?
— 通过shell脚本的sleep命令配合Crontab即可完成这一功能
— date && sleep 0.5s && date