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

定时任务是永久的,延时任务是临时的。

系统延时任务

at 命令
  • at命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份,对您系统的检查或者特定时间发送的通知。那些需要花费很长时间才可完成的作业正适合 at 命令。仅需使用 at 命令将任务设置为在一分钟或两分钟之后运行。然后您便可以安全注销 ,因为该任务会在与 shell 会话断开连接的情况下运行。
  • at 命令必须指定任务应运行的时间。该指定可以是具体时间或日期( 例如星期一,10:00pm 或 7月15日),也可以是当前时间的相对时间 ( 现在时间加上 5 分钟 , 现在时间加上 3 天或 4:00pm 加上1 周 ) 。通过添加其他选项,您可以在任务完成是发送邮件 ( -m ),或者从文件中读取任务 ( -f 文件 ),而无需通过标准输入进行在键入 at 命令行之后,按 Enter 并继续键入作业中包含的其他命令。任务可由多个命令组成。在完成键入要运行的命令时 , 在单独出现的一行中按 Ctrl+d 完成任务。
[root@station mnt]# at 03:59    任务执行时间
at> touch /mnt/file{1..6}    任务
at> <EOT>     Ctrl+D结束指定
job 3 at Mon May  6 03:59:00 2019   延时任务编号/执行时间等信息

在这里插入图片描述

[root@station mnt]# at now+1min
at> rm -fr /mnt/*
at> <EOT>
job 4 at Mon May  6 04:06:00 2019

在这里插入图片描述

at -l查看任务列表
at -c 任务编号查看任务内容
at -r 任务编号取消任务

延时任务的黑白名单

  • 黑名单 vim /etc/at.deny
    在黑名单中写入用户westos,然后切换到westos用户,发现westos没有设置延时任务的权限。
    在这里插入图片描述
    在这里插入图片描述
    我们切换到student用户,为student设置延时任务,虽然student有设置延时任务的权限,但是在/mnt下设置的延时任务并没有执行,这是因为student对目录本身没有写的权限。
    在这里插入图片描述
    要解决这个问题,我们在超户下更改/mnt的权限就可以了。
    在这里插入图片描述
  • 白名单
    系统中默认没有白名单,我们要按照黑名单的格式新建一个白名单vim /etc/at.allow
    注意:白名单如果存在,则黑名单不被读取,如果黑白名单都写了westos用户,那么黑名单失效,westos是唯一可以创建延时任务的用户。
    在这里插入图片描述

系统定时任务

crontab -e创建定时任务
crontab -l查看定时任务
crontab -r取消定时任务

设置定时任务之前,我们先查看定时任务的服务是否开启。systemctl status crond.service,关闭的情况下所有设置的任务都不执行。
在这里插入图片描述
通过man 5 crontab命令可以查看定时任务的设置格式

The time and date fields are:

              field          allowed values
              -----          --------------
              minute         0-59
              hour           0-23
              day of month   1-31
              month          1-12 (or names, see below)
              day of week    0-7 (0 or 7 is Sunday, or use names)

例如:

* * * * *表示每分钟
*/2 * * * *表示每两分钟
*/2 09,17 * * *早9 晚五,每两分钟
*/2 09-17 * * *早9到晚五,每两分钟
*/2 09-17 1 * *每月1号的早上9点到下午5点,每两分钟
*/2 09-17 1 3 *每年3月1号的早上9点到下午5点,每两分钟
*/2 09-17 1 3 4每年3.1号的9-17点,以及3月的每周四的9-17点。是两个条件,星期和月份是或者的关系
crontab -e -u student   ##为student创建定时任务
crontab -l -u student    ##查看student的定时任务
crontab -r -u student   ##取消定时任务

cron注意:1.属于系统的任务通常保存在 /etc/crontab 文件中而不是使用crontab -e 编辑保存在个人文件中。更好的做法是用文本编辑器创建 crontab 文件并保存到 /etc/cron.d 中 ( 避免更新系统软件包 cronie 时出现问题 ) 。
2.有时超级用户给普通用户设定的定时任务执行失败,原因有可能是普通用户对要操作的文件或目录没有执行权限。

定时任务的黑白名单

  • 黑名单vim /etc/cron.deny文件中加入用户名,用户不可再进行定时任务的设置。
    我这里黑名单中写了student
    在这里插入图片描述
  • 白名单vim /etc/cron.allow中写入用户名,除此用户外的其他任何用户都不可以执行定时任务。

脚本执行定时任务

vim /etc/cron.d/westos   中写入
* * * * * root   run-parts    /westos       

mkdir /westos
vim /westos/test.sh   中写入
#!/bin/bash
touch /mnt/file{1..3}

chmod +x /westos/test.sh    ##给脚本加执行权限

在这里插入图片描述
此脚本每整分都会自动执行一次。
在这里插入图片描述

临时文件

  • 系统中服务在正常运行时会产生临时文件。
  • 在系统中 /usr/lib/tmpfiles.d/ 标识服务的临时文件存放位置。
cd /usr/lib/tmpfiles.d/    ##临时文件存放位置
vim westos.conf    ##后缀必须为.conf
d    /mnt/westos  777  root   root    10s
d文件类型  /mnt/westos表示要执行的文件  777表示对文件授予满权限  所有人所有组为root

在这里插入图片描述

systemd-tmpfiles --create /usr/lib/tmpfiles.d/*      ##创建westos.conf中写的目录/mnt/westos
touch /mnt/westos/file1   
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*     ##清理目录下的失效文件

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值