第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 2019年5月19日6点
⚫ at 6:00 5/19/19 2019年5月19日6点
⚫ at 23:59 12/06/2019 2019年12月6日23:59
指定日期
向后延期
at使用实例
at的应用
⚫ 当指定了时间并按下 enter 之后,at 会进入交谈模式并要求输入指令或程序,当你输入完后 按下 ctrl+D 即可完成所有动作,至于执行的结果将会寄回你的帐号中。
生成at任务
[root@centos7 ~]# date
2019年 10月 20日 星期日 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 每周一、三、五的8点30分
⚫ 0 8-18/2 * * * 8点到18点之间每隔2小时的整点
⚫ 0 * */3 * * 每隔3天的整点运行
crontab 应用示例 3-1
示例1(root用户)
⚫ 每天早上7:50自动开启sshd服务,22点50时关闭
⚫ 每隔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