计划延迟的用户作业
描述延迟的用户任务
计划好运行的命令被称为任务或作业(
task or job
)
at
软件包包含
atd
守护进程,和一组命令(
at
、
atq
等)。在默认的 RHEL 安装过程中,将自动安装并启用
atd
守护进程
root
及普通用户可以使用
at
命令创建计划任务,
atd
守护进程提 供
a-z 共26个队列,按字母排序,越后面的队列优先级越低
计划延迟的用户任务
使用
at TIMESPEC
创建作业,
at
从
stdin
中读取指令,直至
Ctrl+D
终止。也支持从脚本中导入指令,例如:at now +5min < myscript
TIMESPEC
非常灵活,可以参考:
/usr/share/doc/at/timespec
- now +5min
- teatime tomorrow
(下午
16:00
)
- noon +4 days
- 5pm august 3 2021
查看和管理延迟的用户作业
使用
atq 或 at -l
命令查看用户的待处理作业
![](https://i-blog.csdnimg.cn/blog_migrate/a57e8ffdc002f63c7c8b2869f0c6d016.png)
1.
该作业的唯一编号;
2.
计划作业的执行日期和时间;
3.
表示作业已排入默认队列 a
,不同的作业可以排入不同的队列中;
4.
作业所有者
普通用户只能查看和控制自己的作业。
root
用户可以查看和管理所有作业
at -c JOBNUMBER
可以查看作业的详细信息
atrm JOBNUMBER
删除计划作业
计划周期性用户作业
描述周期性用户作业
按计划重复运行的作业被称为周期性作业
crond
守护进程管理周期性作业,由
cronie
软件包提供,默认安装并启动
crond
守护进程读取多个配置文件,
crontab 命令
编辑配置文件
如果计划任务运行失败,crond 会发送邮件给指定用户
![](https://i-blog.csdnimg.cn/blog_migrate/f7a22a41d57c9af9307375a44477f328.png)
注意:
crontab
命令使用
-u
选项,以此来管理其他用户的作业。
不
推荐crontab 命令来管理
系统作业,而应使用下一节中介绍的方法
描述用户作业格式
crontab -e
调用
vim
进行计划任务的编辑,每行一个作业,支持空行和
# 注释行
crontab
的字段格式是:
分钟 小时 日 月 星期 命令
,其中日和星期是或的关系
前五个字段全部使用相同的语法规则:
*
表示始终
数字
可用于指定分钟数或小时数、日期或者工作日
x-y
表示范围,
x
到
y
(含)
x,y
表示列表,列表也可以包含范围
*/x
表示
x 的时间间隔
周期性用户作业示例
每年
2
月
2
日上午
9 点准点执行命令:/usr/local/bin/yearly_backup
![](https://i-blog.csdnimg.cn/blog_migrate/47fd766f691d13c309703f1a8ce0e8f5.png)
七月每周五的上午
9
点(9:00)和下午
5
点间(16:59),每五分钟向该作业的所有者发送
包含单词 Chime 的电子邮件
![](https://i-blog.csdnimg.cn/blog_migrate/7b88bff5f8d78bfb308557a41131e77b.png)
每个工作日(周一到周五)上午
9
点执行
mutt
命令,从而将邮件消息 Checking in 发送给收件人 boss@example.com
![](https://i-blog.csdnimg.cn/blog_migrate/20cb82ea3dbe44572d7d3d66607cf900.png)
计划周期性系统作业
描述周期性系统作业
系统范围的
crontab
文件与用户的
crontab
类似,唯一的不同是系统范围的 crontab
文件的命令字段前面有一个
额外用户字段
![](https://i-blog.csdnimg.cn/blog_migrate/a29f94d8050793eddf131bcabced8bf4.png)
周期性系统作业,应始终在 /etc/cron.d 目录下创建自定义 crontab 文件
crontab
系统中还包含需要
每小时、每天、每周和每月运行的脚本目录
。
这些目录中包含可执行的
shell
脚本(记得
chmod +x script_name
),分别对应于名为 /etc/cron.hourly/
、
/etc/cron.daily/
、
/etc/cron.weekly/
、
/etc/cron.monthly/ 的目录
/etc/cron.d/0hourly
文件调用
run-parts
命令运行
/etc/cron.hourly/*
脚本。
/etc/anacrontab
文件调用
run- parts
命令运行每日、每周和每月的作业
/etc/anacrontab
确保重要的作业始终运行,不会因为系统在应执行作业时关闭或休眠而意外跳过。例如,如果由于系统重启而导致某个每日运行系统作业上次未按时执行,则在系统启动后就会执行此作业。
SYSTEMD timer 简介
随着
systemd
,
RHEL7
开始启用了新的调度功能:
systemd timer unit
systemd timer unit
激活另一个
unit
,一般是与
timer unit
同名的
serviceunit
timer unit 举例
sysstat
软件包含有:
sysstat-collect.timer
,每隔
10
分钟收集系统统计信息,参考:/usr/lib/systemd/system/sysstat- collect.timer
![](https://i-blog.csdnimg.cn/blog_migrate/dbab345c148f615ef18ac05f7827c766.png)
OnCalendar
定义了时间间隔,表示方法很灵活,例如:
2019- 03-* 12:35,37,39:16 表示
2019
年
3
月每一天的
12:35:16
、
12:37:16
和12:39:16
也可使用
OnUnitActiveSec
,例如:
OnUnitActiveSec=15min
表示每隔
15 分钟激活
注意
:不要修改
/usr/lib/systemd/system
中配置文件,应该 拷贝到 /etc/systemd/system 中并修改,以防因为软件包的更新被覆盖
更改
systemd
配置后,使用
systemctl daemon-reload
让
systemd
重新加载配置
重新加载后,需要使用
systemctl 激活 timer unit
![](https://i-blog.csdnimg.cn/blog_migrate/944c4a8bcd54c58a0bd8b5306d84d2d5.png)
管理临时文件
管理临时文件
有些应用(和用户)会使用
/tmp
目录来保存临时数据 还有一些应用(和用户)则使用特定位置,如 /run
下特定易失性目录
系统重新启动或断电时,易失性存储器的所有内容都会丢失,为保持系统充分运行,有必要创建这些不存在的目录和文件,因为守护进程和脚本可能会依靠它们的存在
RHEL7
及更高版本中包含了一个名为
systemd-tmpfiles
的新工具,它提供了一种结构化和可配置的方法来管理临时目录和文件
在
systemd
启动系统后,其中一个最先启动的
service unit
是
systemd-tmpfiles-setup,该服务运行
systemd-tmpfiles -- create --remove
命令
此命令从
/usr/lib/tmpfiles.d/*.conf
、
/run/tmpfiles.d/*.conf
和 /etc/tmpfiles.d/*.conf 读取配置文件。系统会删除这些配置文件中标记要 删除的文件和目录,并且会创建标记要创建(或修复权限)的文件和目录,并使其拥有正确的权限(如有必要)
使用 Systemd timer 清理临时文件
名为
systemd-tmpfiles-clean.timer
的
systemd timer unit
会定期触发
systemd-tmpfiles-clean.service
来执行 systemd-tmpfiles --clean命令
![](https://i-blog.csdnimg.cn/blog_migrate/82d77b22f59dac40e5e0574468dbe272.png)
手动清理临时文件
tmpfiles.d(5) man page
介绍了
systemd-tmpfiles
的配置文件格式
基本语法由七列构成:“类型”、“路径”、“模式”、“
UID”
、“
GID”
、 “期限”和“参数”
类型指的是
systemd-tmpfiles
应执行的操作
d
表示创建不存在的目录;
Z
表示以递归方式恢复
SELinux context
及权 限;
D
表示如果目录不存在则创建该目录,如果存在则清除所有内容
![](https://i-blog.csdnimg.cn/blog_migrate/7b33958d3b93d01560513e51c823c6f5.png)
运行
systemd-tmpfiles --clean
时,删除超过一天时间内尚未被访问、更改或修改的所有文件
配置文件的优先级
配置文件可位于三个位置:
- /etc/tmpfiles.d/*.conf
管理员自定义配置文件,优先级最高
- /run/tmpfiles.d/*.conf
内存中,由守护进程自己管理,优先级次之
- /usr/lib/tmpfiles.d/*.conf rpm
软件包提供,不要编辑,优先级最低