计划将来的任务crontab

21 篇文章 0 订阅
21 篇文章 0 订阅

计划延迟的用户作业

描述延迟的用户任务

计划好运行的命令被称为任务或作业( 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 命令查看用户的待处理作业
1. 该作业的唯一编号;
2. 计划作业的执行日期和时间;
3. 表示作业已排入默认队列 a ,不同的作业可以排入不同的队列中;
4. 作业所有者
普通用户只能查看和控制自己的作业。 root 用户可以查看和管理所有作业
at -c JOBNUMBER 可以查看作业的详细信息
atrm JOBNUMBER 删除计划作业

计划周期性用户作业

描述周期性用户作业

按计划重复运行的作业被称为周期性作业
crond 守护进程管理周期性作业,由 cronie 软件包提供,默认安装并启动
crond 守护进程读取多个配置文件, crontab 命令 编辑配置文件
如果计划任务运行失败,crond 会发送邮件给指定用户
注意: crontab 命令使用 -u 选项,以此来管理其他用户的作业。 推荐crontab 命令来管理 系统作业,而应使用下一节中介绍的方法

描述用户作业格式

crontab -e 调用 vim 进行计划任务的编辑,每行一个作业,支持空行和 # 注释行
crontab 的字段格式是: 分钟 小时 日 月 星期 命令 ,其中日和星期是或的关系
前五个字段全部使用相同的语法规则:
  * 表示始终
 数字 可用于指定分钟数或小时数、日期或者工作日
  x-y 表示范围, x y (含)
  x,y 表示列表,列表也可以包含范围
  */x 表示 x 的时间间隔

周期性用户作业示例

每年 2 2 日上午 9 点准点执行命令:/usr/local/bin/yearly_backup
七月每周五的上午 9 点(9:00)和下午 5 点间(16:59),每五分钟向该作业的所有者发送
包含单词 Chime 的电子邮件
每个工作日(周一到周五)上午 9 点执行 mutt 命令,从而将邮件消息 Checking in 发送给收件人 boss@example.com

计划周期性系统作业

描述周期性系统作业

系统范围的 crontab 文件与用户的 crontab 类似,唯一的不同是系统范围的 crontab 文件的命令字段前面有一个 额外用户字段

周期性系统作业,应始终在 /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
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

管理临时文件

管理临时文件

有些应用(和用户)会使用 /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命令

手动清理临时文件

tmpfiles.d(5) man page 介绍了 systemd-tmpfiles 的配置文件格式
基本语法由七列构成:“类型”、“路径”、“模式”、“ UID” 、“ GID” 、 “期限”和“参数”
类型指的是 systemd-tmpfiles 应执行的操作
d 表示创建不存在的目录; Z 表示以递归方式恢复 SELinux context 及权 限; D 表示如果目录不存在则创建该目录,如果存在则清除所有内容
运行 systemd-tmpfiles --clean 时,删除超过一天时间内尚未被访问、更改或修改的所有文件

配置文件的优先级

配置文件可位于三个位置:
- /etc/tmpfiles.d/*.conf 管理员自定义配置文件,优先级最高
- /run/tmpfiles.d/*.conf 内存中,由守护进程自己管理,优先级次之
- /usr/lib/tmpfiles.d/*.conf rpm 软件包提供,不要编辑,优先级最低

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值