系统维护通常是在半夜,我们需要定时开启任务进行维护
定时任务:每到一个时间点就去做一个任务,永久生效
延迟任务:到某个时间点做某个任务,一次生效
一、延迟任务的设定
先新建数个文件,开启监控,监控文件状态
at 01:52 设定延时任务,ctrl+d 任务发起
at -l 查看任务
at -c 1 查看任务内容
at -r 1 取消任务
例子:
1:49 的时候设定 01:52 时删除 /other/ 下的所有文件,01:50 的时候文件还在,可以查看到延迟命令的任务和任务内容
01:52 的时候系统就删除了目录下的所有文件,也查看不到延时任务了
二、延时任务的输出去向
当一个延迟执行的任务是有输出的情况时,到了时间点输出到了哪里?
其实是到了当前用户(root用户)的邮箱
如何安装邮件组件:
- 先搭建好本地的软件仓库,详情请看文章《Linux下的软件管理,软件的安装,软件仓库的搭建和共享》四、本地软件仓库的搭建
- 查找邮件相关组件 dnf search mail
- 安装邮件的服务和邮件查看工具 dnf install postfix.x86_64 mailx.x86_64
- 打开邮件服务 systemctl enable --now postfix
- 再遇到有任务输出的情况,mail 打开邮件就能查看到输出情况,exit 可以退出
三、延迟任务的黑白名单设定
目前所有命令都能执行 at 命令,这是不安全的,我们需要设定延迟任务的黑白名单
白名单 在 /etc/at.allow
黑名单 在 /etc/at.deny
当白名单存在时,黑名单是不被查看的;
只有当白名单不存在,黑名单才能被查看
at 任务黑名单的使用:
在黑名单中写入普通用户名 kaikai ,保存退出后,kaikai 用户就不能使用 at 命令了
at 任务白名单创建和使用:
白名单创建后系统中所有普通用户不能执行 at 命令,只有白名单中的用户是被允许的
四、定时任务的设定
先新建数个文件,开启监控,监控文件状态
要想使用系统定时任务,需要开启 crond 服务
crontab -e 编写定时任务
其实文件是在 /var/spool/cron/root
表示每两分钟清空一次目录,整点计时,保存退出即生效
时间表示方式:
min hour day mouth week | 时间表示含义 |
---|---|
* * * * * | 每分钟执行 |
*/2 * * * * | 每两分钟执行 |
*/2 09-17 * * * | 早9点到晚5点每两分钟执行 |
*/2 */2 * * * | 每隔两小时中每隔两分钟执行 |
*/2 09-17 3,5 1 5 | 一月的3号和5号和每个周五的早9点到晚5点每两分钟执行 |
*/2 09-17 * * 5 | 每个周五的早9点到晚5点每两分钟执行 |
注意:
1,2 表示1和2
1-5 表示1到5
1-5/2 表示1-5时间范围内每隔两个周期做一次
crontab -l 查看 crontab 的内容
crontab -r 对 crontab 中所有任务清除
crontab -e -kaikai 指定kaikai用户执行定时任务(只有超级用户可以发起)
五、定时任务的黑白名单设定
目前所有命令都能执行 crontab 命令,这是不安全的,我们需要设定延迟任务的黑白名单
白名单 在 /etc/cron.allow
黑名单 在 /etc/cron.deny
当白名单存在时,黑名单是不被查看的;
只有当白名单不存在,黑名单才能被查看
crontab 任务黑名单的使用:
在黑名单中写入普通用户名 kaikai ,保存退出后,kaikai 用户就不能使用 crontab 命令了
crontab 任务白名单创建和使用:
白名单创建后系统中所有普通用户不能执行 crontab 命令,只有白名单中的用户是被允许的
六、系统级的 crontab 的设定方式
在目录 /etc/ 下,有很多关于 cron 的目录,其中目录 cron.d 是自定义系统级的目录
进入目录 cd /etc/cron.d ,写文件 vim westos
其中可以书写:
* * * root rm -fr /other/*
表示每分钟以超级用户身份每分钟执行任务
书写好文件后,保存退出,新建文件
过一分钟指定文件会被删除
七、临时文件管理
系统中有临时文件的管理命令 systemd-tmpfiles
systemd-tmpfiles --cat-config 查看临时文件建立策略
可以发现,临时文件策略都在 /usr/lib/tmpfiles.d/ 这个目录下
做实验:
- 进入目录 cd /lib/tmpfiles.d/ ,创建一个临时文件建立策略 vim westos.conf 后缀固定,编辑内容
此时也能看到我们设定的临时文件策略也能看到
- systemd-tmpfiles --creat /lib/tmpfiles.d/westos.conf 创建该目录,手动生效
- 我们在 westos 目录下建立文件,紧接着
systemd-tmpfiles --clean /lib/tmpfiles.d/westos.conf 清理目录 westos 下的临时文件
在生命周期 5s 内,文件是不能被清理的
- 超过了生命周期,再清理才能生效
应用:
将命令 systemd-tmpfiles --clean /lib/tmpfiles.d/*.conf 写入定时任务中,可以定期对临时文件进行清理