Linux下开发工具学习-Crontab

Crontab命令常见于Unix和类Unix的操作系统中,用于设置周期性被执行的指令,让重复的任务自动化执行。本文主要是对我在学习Crontab时做的一些总结。

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

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

其中,被周期性执行的任务称为Cron Job;周期性执行的任务列表称为Cron Table

3.Crontab实践
  • 相关工具
  • 安装并检查Crontab服务
  • Crontab的基本组成
  • Crontab的配置文件格式
  • Crontab工具的使用
  • Crontab的日志
  • Crontab常见错误

(1)相关工具
用于远程连接Linux操作系统的远程登录工具很多,常用的有:

  • Putty
  • Xshell
  • Secure crt

(2)安装并检查Crontab服务

  • 检查cron服务:
    • –检查Crontab工具是否安装:crontab -l
    • –检查crond服务是否启动:service crond status
  • 安装cron
    • yum install vixie-cron
    • yum install crontabs

(3)示例

每分钟都打印当前时间到一个日志文件中:
1)crontab -e    #打开定时任务列表文件,进行编辑,输入如下内容:

输入之后,可以通过命令crontab -l 查看任务列表。

2)tail /tmp/log.txt    #查看日志文件中是否定期打印时间:

其中,如果使用tail -f命令,将一直等待日志文件的写入(常用)。

(4)Crontab的基本组成

crontab-1

  • CROND(系统服务)——每分钟都会从配置文件刷新定时任务。
  • 配置文件——以文件方式设置定时任务。
  • crontab(配置工具)——用于调整定时任务。

(5)Crontab的配置文件格式

*  * * * * COMMAND

  • 第一个*:分钟0-59
  • 第二个*:小时0-23
  • 第三个*:日期1-31
  • 第四个*:月份1-12
  • 第五个*:星期0-7(0或7表示星期天)

示例:
1)每晚的21:30重启apache

2)每月1、10、22日的4:45重启apache

3)每月的1到10日的4:45重启apache

4)每隔两分钟重启apache服务器

5)奇数分钟的时候重启apache

6)晚上11点到早上7点之间,每隔一小时重启apache

注意,第一个星号位被置为了0,若不置为0,则表示在23-7点之间任何一分钟都会执行。

7)每天18:00至23:00之间每隔30分钟重启apache

小结:

  • *表示任何时候都匹配
  • 可以用“A,B,C”表示A或者B或者C时执行命令
  • 可以用“A-B”表示A到B之间时执行命令
  • 可以用“*/A”表示每A分钟(小时等)执行一次命令

(6)Crontab工具的使用

使用crontab -help查看相关命令,其中最常用的命令有两个:
crontab -e
crontab -l

tail -f /var/log/cron    #查看cron的log文件

(7)Crontan配置文件

1)全局(系统)配置文件:/etc/crontab

也可以在该文件中加入计划任务,不同之处在于:一般认为,通过crontab -e输入的计划任务称为用户级的计划任务;而通过/etc/crontab输入的计划任务称为系统级的计划任务。

2)此外,还要注意一点,前面示例我们都是直接通过命令crontab -e命令来进行编辑的,而在/etc/cron.d/目录下有一个sysstat文件。
如果修改了sysstat文件并执行命令crontab sysstat,那么再通过crontab -e编辑文件,其内容将变成sysstat文件的内容,即你先前单独在crontab -e下编辑的计划任务就丢失了。
说这些的原因是,当我们在工作中,编辑计划任务时最好不要通过crontan -e的方式,而是通过:crontab [options] file 指明一个文件的形式,防止先前的计划丢失。

3)/var/spool/cron/root

crontab操作的文件其实就是/var/spool/cron/root文件,通过如下两个命令对比:

(8)Crontab的日志

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注