10章Linux下的计划任务

Linux下的计划任务 

掌握at的使用

掌握cron的使用

任务计划

⚫ 可以将任何脚本、程序或文档安排在某个最方便的时间运行。“任务计划”在每次启动系统 的时候启动并在后台运行。

⚫ 计划可以让任务在每天、每星期、每月或某些时刻(例如系统启动时)运行。

⚫ 计划可以是一次性的,也可以是循环执行的。

计划任务管理 — at 

at命令

在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务

服务脚本名称:/usr/lib/systemd/system/atd.service

设置格式:at [HH:MM] [yyyy-mm-dd]

启动atd服务

[root@centos7 ~]# systemctl enable atd

[root@centos7 ~]# systemctl start atd

at的时间格式2-1 

time 的格式是:

⚫ hh:mm其中的 hh 为小时,mm 为分钟,

可以指定 am, pm, midnight, teatime(就是下午 4点钟)等口语词。

如果超过一天内的时间,则可以用mmddyy 或者 mm/dd/yy 的格式,其中 mm 是月份, dd 是日期,yy 是指年份

也可以使用像是 now + 时间间隔来弹性指定时间,其中的时间间隔可以是 minutes, hours, days, weeks

也可指定 today tomorrow 来表示今天或明天。

at的时间格式2-2 

time时间示例

⚫ at now +2 minutes 两分钟以后

⚫ at teatime 下午四点

⚫ at 14:00 tomorrow 明天下午两点

⚫ at 5pm +2 weeks 两周后的下午5

⚫ at 6:00 May 19 2019 20195196

⚫ at 6:00 5/19/19 20195196

⚫ at 23:59 12/06/2019 201912623:59

指定日期

 

 

向后延期

at使用实例 

at的应用

当指定了时间并按下 enter 之后,at 会进入交谈模式并要求输入指令或程序,当你输入完后 按下 ctrl+D 即可完成所有动作,至于执行的结果将会寄回你的帐号中。

生成at任务

[root@centos7 ~]# date

20191020日 星期日 17:07:30 CST

[root@centos7 ~]# at 17:10 2019-10-20

at> ps -A > /root/ps1.txt at>

job 2 at Sun Oct 20 17:10:00 2019

at使用实例 

查看任务

⚫ at -l

⚫ atq

[root@centos7 ~]# atq

2 Sun Oct 20 17:10:00 2019 a root 

删除任务

⚫ at -d

⚫ atrm

 

 

删除计划任务

 

练习

 

在一个文件中输入一条文字

 

计划任务管理 —— cron 

cron命令

按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性 计划任务

服务脚本名称:/usr/lib/systemd/system/crond.service

[root@centos7 ~]# systemctl start crond

[root@centos7 ~]# systemctl enable crond

配置文件/etc/crontab

计划任务管理 —— crontab 

管理cron计划任务

编辑计划任务:crontab -e [-u 用户名]

查看计划任务:crontab -l [-u 用户名]

删除计划任务:crontab -r [-u 用户名]

 

 

 

crontab任务的配置格式

crontab任务的配置格式

时间数值的特殊表示方法

⚫ * 表示该范围内的任意时间

⚫ , 表示间隔的多个不连续时间点

⚫ - 表示一个连续的时间范围

⚫ / 指定间隔的时间频率

应用示例

⚫ 0 17 * * 1-5      周一到周五每天17:00

⚫ 30 8 * * 1,3,5    每周一、三、五的830

⚫ 0 8-18/2 * * *    8点到18点之间每隔2小时的整点

⚫ 0 * */3 * *       每隔3天的整点运行

crontab 应用示例 3-1 

示例1(root用户) 

每天早上7:50自动开启sshd服务,2250时关闭

每隔5天清空一次FTP服务器公共目录/var/ftp/pub

每周六的7:30时,重新启动httpd服务

每周一、三、五的17:30时,打包备份/etc/httpd目录

[root@centos7 root]# crontab -e

50 7 * * * systemctl start sshd

50 22 * * * systemctl stop sshd

51 0 0 */5 * * /bin/rm -rf /var/ftp/pub/*

30 7 * * 6 systemctl restart httpd

30 17 * * 1,3,5 /bin/tar jcf httpdconf.tar.bz2 /etc/httpd/

crontab 应用示例 3-2 

示例2(jerry用户)

每周日晚上23:55时将“/etc/passwd”文件的内容复制到宿主目录中,保存为pwd.txt文件

[root@centos7 root]# crontab -e -u jerry

55 23 * * 7 /bin/cp /etc/passwd /home/jerry/pwd.txt

crontab 应用示例 3-3 

示例3