Linux系统延时任务和定时任务

延时任务和定时任务

  • 系统延时任务——at
    • 简介
    • 延时任务黑名单
    • 延时任务白名单(优先级高)
  • 系统定时任务——crontab
    • 简介
    • 定时任务的黑名单&白名单
    • 脚本执行定时任务
  • 系统中的临时文件

系统延时任务——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>      Ctrl+D结束指定
job 1 at Thu May  9 02:00:00 2019   延时任务编号/执行时间等信息

Linux系统延时任务和定时任务_第1张图片
在这里插入图片描述
Linux系统延时任务和定时任务_第2张图片
Linux系统延时任务和定时任务_第3张图片

命令 含义
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

Linux系统延时任务和定时任务_第4张图片

  • (2)然后,vim /etc/cron.d/test
写入:
* * * * * root   run-parts    /mnt

Linux系统延时任务和定时任务_第5张图片
Linux系统延时任务和定时任务_第6张图片

系统中的临时文件

  • 系统中服务在正常运行时会产生临时文件。
    在 /usr/lib/tmpfiles.d/ 会标识服务的临时文件存放位置。
vim /usr/lib/tmpfiles.d/test.conf
按照其他配置文件的格式写入:
文件类型,要变成临时的文件位置,权限,所属用户及组,多长时间后可以清理

Linux系统延时任务和定时任务_第7张图片
Linux系统延时任务和定时任务_第8张图片

systemd-tmpfiles --create /usr/lib/tmpfiles.d/*      ##创建临时目录,也就是这里的配置文件中指定的目录将会变成临时文件,倒计时后会可以被清理
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*     ##清理目录下的失效文件

在这里插入图片描述
Linux系统延时任务和定时任务_第9张图片

你可能感兴趣的:(linux)