Crontab 从定时重复工作中解脱出来

工作中遇到的困难

  • 每分钟需要执行一个程序检查系统运行状态
  • 每天凌晨需要对过去一天的业务数据进行统计
  • 每个星期需要把日志文件备份
  • 每个月需要把数据库进行备份

Crontab 简介

Crontab 是什么

Crontab 是一个用于设置周期性被执行任务的工具。

  • 被周期性执行的任务我们陈伟Cron Job
  • 周期执行的任务列表我们称为Cron Table

Crontab 实践

检查cron服务

  • 检查Crontab工具是否安装: crontab -l
  • 检查Crontab 服务是否启动: service crond status

    安装cron

    1
    2
    yum install vixie-cron
    yum install crontabs

一个简单的例子

1
2
3
4
5
#编辑定时任务脚本
crontab -e
#添加一条简单的定时命令每分钟打印时间
[vi模式] */1 * * * * date >> /tmp/log.txt

一个实用的命令

1
2
3
4
5
# 显示文件的最后三行
tail -3 文件
# 动态刷新显示文件的最后几行
tail -f 文件

Crontab 的基本组成

系统服务 crond 每分钟都会从配置文件刷新定时任务

Crontab 的配置文件格式

* * * * * COMMAND

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#每晚的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分钟(小时等)执行一次命令

Crontab 命令

1
crontab [选项]

选项:

  • -l 罗列定时任务列表
  • -e 编辑配置文件
  • -u 指定用户

Crontab 命令日志

/var/log/cron文件保存着cron的任务执行记录