一:at一次性任务设置
- CentOS7系统中的计划任务是由at,cronie软件包提供,通过atd和crond这两个系统服务实现一次性,周期性的计划任务功能,并分别通过at,crontab命令进行计划任务设置
- 开启系统服务atd是at命令设置的计划任务的前提条件
1.1:at命令基本不格式
at [HH:MM] [yyyy-mm-dd] '//at 时:分 年-月-日'
1.2:at命令使用顺序
- 查看时间—设置时间—输入命令—CTRL+D提交任务
- date:查看当前时间.设置任务,时间不可在当前时间之前
- 命令输入完成后按CTRL+D提交任务即可
[root@localhost ~]
2020年 10月 21日 星期三 22:00:58 CST
[root@localhost ~]
1.3:atq命令,查看待执行的任务列表
- 对于已经设置,但并未执行的任务,可通过atq命令查看.(已经执行的任务不会出现)
- atq查看的任务列表,每个任务的序号不会变动,即便1-5任务序号任务已经执行完毕,现实的第六个为执行任务序号也是6,而不会变成1
1.4:atrm命令,删除指定编号的at任务
- atrm命令用来删除指定编号的at任务,编号可以通过atq查看
- 删除后的at任务不会出现在atp显示结果中
二:crontab周期性任务设置
- crontab(定时任务)
- 使用crontab命令设置的计划任务可以按照预设的周期重复执行,可以大大减轻重复性系统管理任务的操作
- 软件包cronie提供crontab工具,系统服务crontab和配置文件/etc/crontab
- 开启系统服务crontab十七栋周期性任务的前提条件
2.1:crontab的配置文件和目录
- crontab通过多个目录和文件设置计划任务,不同类型的任务有不同的配置文件来配置
2.1.1:/etc/crontaab全局配置文件
- 全局配置文件
- /etc/crontab 文件中设置的是维护Linux系统所需要的任务
- Linux系统及相关程序在安装时自动设置
- 不建议用户手动修改此文件
[root@localhost ~]
SHELL=/bin/bash '//设置执行计划任务的Shell环境'
PATH=/sbin:/bin:/usr/sbin:/usr/bin '//定义可执行命令及程序的路径'
MAILTO=root '//将任务输出信息发送到指定用户的邮箱'
HOME=/ '//执行计划任务时使用的主目录'
2.1.2:/etc/cron.*系统默认设置
- 系统默认设置cron人物的配置文件存放目录
- 软件包crontabs安装后,会在/etc/cron.*/目录下生成存放一些系统默认设置的计划任务目录,设置了系统每个小时,每一天做些什么任务
- 例如:
/etc/cron.hourly/ 目录下存放的是系统每小时要做的任务可执行脚本
/etc/cron.daily/ 目录下存放的是系统每天要做的任务可执行脚本
/etc/cron/weekly/ 目录下存放的是系统每周要做的任务可执行脚本
/etc/cron/monthly/ 目录下存放的是系统每月要做的任务可执行脚本 - 这些是可执行脚本,不是cron配置文件,cron服务通过run-parts工具调用执行这些脚本
2.1.3:/var/spool/cron/用户名 用户定义的位置
- 用户自行执行的cron计划任务将被保存在目录/var/spool/cron/中
- 用户使用crontab命令创建计划任务,就会在/var/spool/cron/目录下生成一个与用户名相同的文件
- 例如:
root用户的cron计划任务保存在配置文件/var/spool/cron/root 中
[root@localhost ~]
ls: 无法访问/var/spool/cron/*: 没有那个文件或目录 '//没有创建任务'
- cron守护进程会自动检查上述三个文件,若有配置更改,就会载入内存,不许重启cron守护进程就可以时设置生效
2.2:使用crontab命令管理用户的计划任务
常用选项
crontab -e [-u 用户名] '//编辑计划任务 e:edit,编辑,使用方式同Vim编辑器。'
crontab -l [-u 用户名] '//查看计划任务 l:list,列表'
crontab -r [-u 用户名] '//删除计划任务 r:remove,移除'
crontab -l '//查看当前用户的计划列表'
crontab -l -u lisi '//查看lisi用户的计划任务'
crontab -e '//可以操作删除一条计划任务'
crontab -r '//删除用户所有的计划任务'
- 命令格式:时间周期设置+任务内容设置
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/246bf6d594ea01377b3a630367b344c4.png)
- 分时日月周的取值范围和命令说明
字段 | 命令 |
---|
分钟 | 取值范围0-59之间的任意数字 |
小时 | 取值范围0-23之间的任意数字 |
日期 | 取值范围1-31之间的任意数字 |
月份 | 取值范围1-12之间的任意数字 |
星期 | 取值范围0-7之间的任意数字,0和7都代表星期日 |
命令 | 要执行的命令或程序脚本 |
时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续的时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
例如:
0 17 * * 1-5 '//表示周一到周五每天17:00'
30 8 * * 1,3,5 '// 表示每周一,三,五的8点30分'
0 8-18/2 * * * '// 表示8点到18点之间每2小时'
0 * */3 * * '//表示每3天'