linux 例行性工作: 1、单一执行的例行性工作:仅处理执行一次就结束了,at-> atd 2、循环执行的例行性工作:每隔一定的周期就需要执行一次,crontab
要使用单一工作调度时,linux 上面需要有负责这个调度的服务 atd。
单一执行的例行性工作
(1.)我们 使用 at 命令来生成所要运行的工作,并将这个工作以文本方式写入 /var/spool/at/目录内,该工作便能等待 atd 这个服务的取用与执行了。
为了安全问题,不是所有人都可以进行 at 工作调度。我们可以利用 /etc/at.allow 和/etc/at.deny 这两个文件来进行 at 的使用限制。
at 的实际 工作过程如下:
先寻找/etc/at.allow 这个文件,写在这个文件的用户才能使用 at;如果 /etc/at.allow 不存在,就寻找/etc/at.deny 这个文件,写在该文件的用户不 能使用 at;如果两个文件都不存在,那么只有 root 可以使用 at 命令
在 rhel 里面,由于假设系统上的所有用户都是可信任的,因此系统会保留 一个空的/etc/at.deny 文件,意思是允许所有人使用 at 命令,如果你想设 置拒绝某人使用 at 命令,你可将该用户写入/etc/at.deny(格式为一行代 表一个用户)
at [-mldv] TIME
-m:当 at 的工作完成后,即使没有输出信息,以 email 通知用户该工已完成
-l:at -l 相当于 atq,列出目前系统上面的所有该用户的 at 调度
-d:at -d 相当于 atrm,可以取消一个在 at 调度中的工作
-v:可以使用较明显的时间格式列出 at 调度中的任务列表
-c:可以列出后面接的该项工作的实际命令内容
-f:从文件中读取作
循环执行的例行性工作:
(1.)循环执行的例行性工作调度是由 crond 这个系统服务来控制的。同样,我们也 可以限制使用 crontab 的用户账号。
/etc/cron.allow 将可以使用 crontab 的账号写入其中,若不在该文件内的用户 则不可使用 crontab。
/etc/cron.deny 将不可以使用 crontab 的账号写入其中,若不在该文件内的用 户则可使用 crontab。
当用户使用 crontab 新建工作调度之后,该项工作就会被记录到 /var/spool/cron/里面,并且是以账号来判别的。cron 执行的每一项工作都会被 记录到/var/log/cron 这个日志文件中。
crontab [-u user] [-l | -r | -e]
-u:只有 root 才能进行这个任务,帮某个用户新建/删除 crontab
-e:编辑 crontab 的工作内容
-l:查阅 crontab 的工作内容
-r:删除所有的 crontab 的工作内容
文件格式为:每一行为一个工作,每项工作具有六个字段。
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
数字范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 | 执行的命令 |
0 和 7 都代表周天
特殊字符 | 含义 |
* | 代表任何时刻 |
' | 代表分隔时段 |
, | 代表一段时间范围 |
/数字 | 指定时间的间隔频率,例如每 3 分钟进行一次,*/3 |
1.使用at配置5小时后,将this is a at task 写入 root中的at_test中
at> at now +5 hours
at> "This is a at task" > /root/at_test
at> <EOT>
job 2 at Thu Dec 9 11:54:00 2021
2.使用crontab配置,每周六,周日9点,14点,提醒我上rhce课,写入root的家目录中的cron_tes文件中
[root@localhost ~]# crontab -e
0 9,14 * * 6,7 echo "提醒我上rhce课" >> /root/cron_test