Linux中的定时任务\计划任务-Crontab
本学习笔记参考网址:www.imooc.com/learn/216,
www.imooc.com/video/10976
Linux进程管理:http://blog.csdn.net/u012852374/article/details/53908339
Linux工作管理:http://blog.csdn.net/u012852374/article/details/53926383
Linux服务管理:http://blog.csdn.net/u012852374/article/details/53894398
Linux定时器:http://blog.csdn.net/u012852374/article/details/53892880
Linux系统资源查看:http://blog.csdn.net/u012852374/article/details/53926409
简介:Crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。本课程通过对Crontab的介绍以及案例演示,带领大家学习在实际工作中通过crontab进行计划任务设置,让重复的任务自动化执行,提高大家工作效率。
一、工作中遇到的困难
- 每分钟需要执行一个程序检查系统运行状态
- 每天凌晨需要对过去一天的业务数据进行统计
- 每个星期需要吧日志文件备份
- 每个月需要把数据库进行备份
二、Crontab是什么
- Crontab是一个用于设置周期性被执行的任务的工具
- 被周期性执行的任务我们称为Cron Job
- 周期性执行的任务列表我们成为Cron Table
三、检查Crontab服务
- 检查Crontab工具是否安装: crontab -l
- 检查crond 服务是否启动: service crond status
如下图:- service crond start //启动服务
- service crond stop //关闭服务
- service crond restart //重启服务
- service crond reload //重新载入配置
四、安装cron服务
- yum install vixie-cron
- yum install crontabs
五、一个简单的例子
如:每分钟都打印当前时间到一个日志文件中
*/1 * * * * date >> /tmp/log.txt
-
编辑crontab输入命令:
crontab -e
也可以是针对某个用户的crontab -e -u username
或者vi /var/spool/cron/username
crontab命令选项,
- u 指定一个用户,
- l 列出某个用户的任务计划,
- r 删除某个用户的任务,
- e 编辑某个用户的任务 在末尾添加:
*/1 * * * * date >> /tmp/log.txt
如图:-
保存并退出
-
查看 log文件
或者是查询某个用户的crontab:crontab -l -u username
- 查看cron执行情况日志
tail -f /var/log/cron
六、Crontab的基本组成
- 系统服务 CROND: 每分钟都会从配置文件刷新定时任务,并启动定时任务
- 配置文件:文件方式设置定时任务
- 配置工具crontab:用于调整定时任务
七、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
八、at一次性执行的任务
at [选项] 时间
选项:
-m:当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户
-c 工作号:显示该at工作的实际内容
时间:
HH:MM 例如 02:30
HH:MM YYYY-MM-DD 例如 02:30 2016-08-20
HH:MM[am|pm] [month] [date] 例如 02:30 July 25
HH:MM[am|pm] + [minutes|hours|days|weeks] 例如 now+5 minutes
例子:
at now + 2 minutes
#在两分钟之后执行hello.sh脚本
at> /root/hello.sh >> /root/hello.log