系统延时任务——at
简介
-
at命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份,对您系统的检查或者特定时间发送的通知。那些需要花费很长时间才可以完成的作业正适合at命令。仅需要使用at命令即任务设置为在一分钟或者两分钟之后运行。然后您便可以安全注销,因为该任务会在与shell会话断开连接的情况下运行。
-
at命令必须指定命令应运行的时间。该指定可以是具体的时间或者日期(例如星期一,10:00pm或者7月15日)。也可以是当前时间的相对时间(现在时间加上5分钟,现在时间加上3天或者4:00pm加上一周),通过添加其他选项,可以在任务完成时发送邮件(-m),或者从文件中读取任务(-f 文件),而无需通过标准输入进行。
-
具体操作:在输入at命令之后,“ENTER”继续键入作业中包含的其他命令,任务可由多个命令组成。在完成键入要运行的命令时,在单独出现的一行“ctrl+d”完成任务。
在shell中输入: at 2:00
at> touch file 任务
at> <EOT> Ctrl+D结束指定
job 1 at Thu May 9 02:00:00 2019 延时任务编号/执行时间等信息
命令 | 含义 |
---|---|
at -l | 查看延时任务列表 |
at -c job号 | 查看job号对应的任务内容 |
at -r job号 | 取消对应job号任务内容 |
延时任务黑名单
vim /etc/at.deny 写入系统普通用户,则此用户不能使用延时任务
延时任务白名单(优先级高)
- 系统中默认没有白名单,我们要按照黑名单的格式新建一个白名单,只有白名单内用户能使用at
vim /etc/at.allow
注意:白名单如果存在,则黑名单不被读取,如果黑白名单都写了student用户,那么黑名单失效,student是唯一可以创建延时任务的用户。
系统定时任务——crontab
简介
- cron是管理设备必须按计划定期重复执行的程序。后台程序crond每分钟唤醒一次,用户使用crontab命令计划个人任务。
命令 | 含义 |
---|---|
crontab -l | 列出定时任务 |
crontab -r | 删除定时任务 |
crontab -e | 编辑定时任务内容 |
crontab -u student -e | 编辑student用户的定时任务 |
注意:crontab -u 这个命令只有root用户才能执行,即帮助其他的用户新建或者删除crontab定时任务。
- crontab -e 编辑定时文件格式为:
* * * * * command(必须是绝对路径)(而且必须有执行权限x)
– 第一个*---------- 分钟 0-59
– 第二个*---------- 小时 0-23
– 第三个*---------- 天 1-31
– 第四个*---------- 月 1-12
– 第五个*---------- 周 0-7
cron语法 | 命令何时运行 |
---|---|
05 * * * * | 每小时整点过5分 |
05 02 * * * | 每天的2:05 |
05 02 01 * * | 每月第一天2:05 |
05 02 01 12 * | 12月1号02:05 |
30 18 * * 5 | 每个周五下午18:30 |
*/2 * * * * | 每隔2分钟 |
*/5 9-17 1,15 * * | 每月的1号或15号的早上9:00到晚上17:00之间每隔5分钟 |
0 10 1 1 5 | 1月1号的0:10和1月的每个周五0:10 |
- 注意:属于系统的任务通常保存在 /etc/crontab 文件中而不是使用crontab -e 编辑保存在个人文件中。更好的做法是用文本编辑器创建 crontab 文件并保存到 /etc/cron.d 中 ( 避免更新系统软件包 cronie 时出现问题 ) 。
对于每天、每周、每月运行一次的脚本,可以直接将其设为可执行文件,并保存在/etc/cron.{daily,weekly,monthly}目录。
定时任务的黑名单&白名单
- 黑名单 /etc/cron.deny,在黑名单中的用户不能执行crontab 命令
但root用户可以执行crontab -u -e 命令编辑文件并执行 - 白名单 /etc/cron.allow中写入用户名,除此用户外的其他任何用户都不可以执行定时任务。
脚本执行定时任务
- 我们上面说了,最好的做法是把创建好的脚本放入到/etc/cron.d对应目录中,那么如何实现呢?
- (1)首先,在相关目录创建相关脚本,并给其执行权限x.
vim /mnt/test.sh
写入:
#!/bin/bash
touch /mnt/file{1..3}
注意:chmod +x test.sh
- (2)然后,vim /etc/cron.d/test
写入:
* * * * * root run-parts /mnt
系统中的临时文件
- 系统中服务在正常运行时会产生临时文件。
在 /usr/lib/tmpfiles.d/ 会标识服务的临时文件存放位置。
vim /usr/lib/tmpfiles.d/test.conf
按照其他配置文件的格式写入:
文件类型,要变成临时的文件位置,权限,所属用户及组,多长时间后可以清理
systemd-tmpfiles --create /usr/lib/tmpfiles.d/* ##创建临时目录,也就是这里的配置文件中指定的目录将会变成临时文件,倒计时后会可以被清理
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* ##清理目录下的失效文件