学习目标

  1. 知道计划任务在工作中的作用
  2. 能够使用at完成计划任务
  3. 能够使用cron完成计划任务

一、计划任务介绍

作为运维人员,经常需要某些脚本、命令在指定的时间段运行、停止。这些操作都可以由系统的计划任务完成的,计划任务又分为“一次性”与“周期性”之分。比如:

  • 一次性计划任务:今晚12:30开启网站服务
  • 周期性计划任务:每周2、4、6将/http/www目录保存备份为backup.tar.gz

二、at 一次性计划任务

1、at介绍

at在centos系统中默认是安装并且随机启动的。

atd管理:

  1. systemctl status|start|stop|restart atd

2、at语法

命令 作用
at [选项] 时间 在指定的时间执行特定的任务
作用 作用
-l 列出系统上所有该用户的任务,也可以使用atq
-d 删除一个任务,也可以使用atrm
时间格式 含义
HH:MM 在这个时间点执行任务
HH:MM YYYY-MM-DD 强制规定在某年某月某日某个时刻执行该任务
HH:MM + n [minutes|hours|days|weeks] 某个时刻的后的某个时间点执行任务

3、案例

  1. # 案例一:再过1分钟后,将任务执行时间写入date.txt 文件
  2. [root@itcast ~]# at now + 1minutes
  3. at> date > /root/date.txt
  4. at> <EOT> # 输入[ctrl] + d 就出现<EOF>,代表退出at编辑模式
  5. job 2 at Thu Mar 28 12:27:00 2019 # 表示第二个at工作将在这个时间执行
  6. # 案例二:由于机房预计于2019/10/2停电,我想要在2019/10/1 23:00关机
  7. [root@itcast ~]# at 23:00 2019-10-1
  8. at> /bin/sync # 将内存中尚未存入磁盘中的信息存到磁盘中,保证数据不丢失
  9. at> /bin/sync
  10. at> /sbin/shutdown -h now
  11. at> <EOT>
  12. job 5 at Tue Oct 1 23:00:00 2019
  13. # 查看at任务
  14. [root@itcast ~]# at -l //也可以使用:atq
  15. 4 Thu Mar 28 12:35:00 2019 a root
  16. 5 Tue Oct 1 23:00:00 2019 a root
  17. # 删除5号任务
  18. [root@itcast ~]# at -d 5 //也可以使用:atrm

三、cron 周期性计划任务

1、cron介绍

  1. cron的服务是crond这个系统服务来控制的,可以用来循环执行任务。在linux系统中也是默认开启并且随机启动的服务。
  2. cron使用crontab指令建立计划任务之后,该工作就会记录到`/var/spool/cron/`里面去。而且是以账号作为判别的,比如,itcast用户使用crontab后,任务会被记录到`/var/spool/cron/itcast`里面去。但是要注意,不要直接使用vim去编辑这个文件,以为可能由于输入语法错误,导致无法执行crontab任务。
  3. 我们执行过的任务记录,会被记录到/var/log/cron这个文档中。也就是cron的日志文件。

2、crontab命令

命令 作用
crontab [选项] 为每个用户维护周期的计划任务
选项 含义
-u username 指定用户管理计划任务,只有root才能使用
-e 编辑crontab任务
-l 查看crontab任务
-r 移除所有crontab的任务,若仅移除一项,使用-e去编辑

3、crontab语法

使用crontab -e进入编辑cron任务模式,编辑的语法是

案例:用root身份在每天1:00给itcast用户发一份邮件

  1. [root@itcast html]# crontab -e
  2. 0 1 * * * mail -s "send mail 01:00" itcast < /root/.bashrc
  3. #分 时 日 月 周 |--------------------指令(做什么)-----------------|

字段说明:

代表意义 分钟 小时 日期 月份 指令
数字范围 0-59 0-23 1-31 1-12 0-7 要做什么任务

特殊字符说明:

特殊字符 含义
* 代表任何时刻
, 代表分割时段
- 代表时间范围
/n n表示数字,n单位时间间隔

4、案例

案例1: 每周5下午6点右键通知交周报

  1. [root@itcast html]# crontab -e
  2. * 18 * * 5 mail haha@itcast.cn < /root/zhoubao.txt

案例2:每周2,4,6的凌晨2点30将/root目录打包为rootbackup.tar.gz

  1. [root@itcast html]# crontab -e
  2. 30 2 * * 2,4,6 /usr/bin/tar -czvf rootbackup.tar.gz /root/