Linus实验楼笔记——第9节:Linux任务计划crontab

1、简介    

    crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond 为其守护进程,crond 常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。

    crontab 的格式:

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

2、实验过程

(1)通过下面一个命令来添加一个计划任务

     crontab -e

     在文档的最后一排加上一排命令,该任务是每分钟我们会在/home/shiyanlou目录下创建一个以当前的年月日时分秒为名字的空白文件。

Linus实验楼笔记——第9节:Linux任务计划crontab_第1张图片

 (2)保存文档后退出,可以看到该命令已被添加


(3)查看添加的任务,出现下面结果表明已正确添加

Linus实验楼笔记——第9节:Linux任务计划crontab_第2张图片

注意

“ % ” 在 crontab 文件中,有结束命令行、换行、重定向的作用,前面加 ” \ ” 符号转义,否则,“ % ” 符号将执行其结束命令行或者换行的作用,并且其后的内容会被做为标准输入发送给前面的命令。

(4)虽然我们添加了任务,但是如果 cron 的守护进程并没有启动,它根本都不会监测到有任务,当然也就不会帮我们执行,我们可以通过以下2种方式来确定我们的 cron 是否成功的在后台启动。

ps aux | grep cron

or

pgrep cron

(5)通过下面的命令可以查看到执行任务命令之后在日志中的信息反馈

Linus实验楼笔记——第9节:Linux任务计划crontab_第3张图片

(6)删除任务


3、Crontab深入

    每个用户使用 crontab -e 添加计划任务,都会在 /var/spool/cron/crontabs 中添加一个该用户自己的任务文档,这样目的是为了隔离。

Linus实验楼笔记——第9节:Linux任务计划crontab_第4张图片

如果是系统级别的定时任务,应该如何处理?只需要以 sudo 权限编辑 /etc/crontab 文件就可以。

cron 服务监测时间最小单位是分钟,所以 cron 会每分钟去读取一次 /etc/crontab 与 /var/spool/cron/crontabs 里面的內容。

在 /etc 目录下,cron 相关的目录有下面几个:

Linus实验楼笔记——第9节:Linux任务计划crontab_第5张图片

每个目录的作用:

  1. /etc/cron.daily,目录下的脚本会每天执行一次,在每天的6点25分时运行;
  2. /etc/cron.hourly,目录下的脚本会每个小时执行一次,在每小时的17分钟时运行;
  3. /etc/cron.monthly,目录下的脚本会每月执行一次,在每月1号的6点52分时运行;
  4. /etc/cron.weekly,目录下的脚本会每周执行一次,在每周第七天的6点47分时运行;

4、作业

  1. 为shiyanlou用户添加计划任务
  2. 每天凌晨3点的时候定时备份alternatives.log到/home/shiyanlou/tmp/目录
  3. 命名格式为年-月-日,比如今天是2017年4月1日,那么文件名为2017-04-01
Linus实验楼笔记——第9节:Linux任务计划crontab_第6张图片

你可能感兴趣的:(Linus初学实验楼实验报告)