[学习笔记]Linux中的定时任务\计划任务-Crontab

时间:2022-04-28 08:14:12

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
    如下图:
    [学习笔记]Linux中的定时任务\计划任务-Crontab
    • 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

    如图:
    [学习笔记]Linux中的定时任务\计划任务-Crontab

  • 保存并退出

    [学习笔记]Linux中的定时任务\计划任务-Crontab

  • 查看 log文件

    [学习笔记]Linux中的定时任务\计划任务-Crontab
    或者是查询某个用户的crontab:crontab -l -u username

  • 查看cron执行情况日志
  tail -f /var/log/cron 

六、Crontab的基本组成

  • 系统服务 CROND: 每分钟都会从配置文件刷新定时任务,并启动定时任务
  • 配置文件:文件方式设置定时任务
  • 配置工具crontab:用于调整定时任务

七、Crontab的配置文件格式

[学习笔记]Linux中的定时任务\计划任务-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