系统定时任务及延时任务

本文详细介绍如何在Linux系统中设置延时与定时任务,包括使用at命令进行延时任务的设定、查看与取消,以及利用crontab进行定时任务的创建、查看与删除。同时,文章探讨了任务的黑白名单机制,以及如何通过临时文件管理和系统级定时设置实现更高级的任务调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.延时任务的设置

命令作用
at -l查看任务
at -c 编号查看任务内容
at -r 编号取消任务
  • 方法一
    我们查看到/mnt目录下有4个文件;
    设定23:09时删除掉/mnt/所有文件。
    at -l命令查看任务。
    等到23:09后查看/mnt/目录下没有文件了。
    在这里插入图片描述
    设置一个延时任务时参数含义:
    在这里插入图片描述
  • 方法二
    我们可以设置在当前时间的基础上设定延时任务。
    我们下面的例子中是在当前时间后一分钟删除/mnt/目录下所有文件。当任务执行后,使用查看语句at -l语句已经查看不到任务了。
    在这里插入图片描述
    我们设置一个任务后,系统会给这个延时任务编号,我们可以通过命令at -c 编号 来查看任务的内容。(内容过长没有全部截图,我们可以在内容最后几行看到任务的语句。)
    在这里插入图片描述
    在这里插入图片描述
    如果我们编写了一个延时任务后不想让其执行了,可通过at -r 编号 语句取消这个延时任务。如下图:
    在这里插入图片描述

2.延时任务的黑白名单

  • 黑名单
    我们在/etc/at.deny(延时任务黑名单文件)文件中添加westos用户。之后转换到westos用户设置延时任务,发现没有权限。
    在这里插入图片描述
    在这里插入图片描述
    在转换到student用户,设置延时任务,发现可以设置延时任务。但是,我们的/mnt目录下创建文件的任务并没有执行(如图1)。因为student用户对/mnt目录没有写权限。在设置延时任务时没有报错,我们使用student用户直接在/mnt目录下创建文件就会报错(如图2)。所以我们只能对本用户有写权限的目录设置延时任务(如用户家目录)就会顺利完成延时任务(如图3)。
    在这里插入图片描述
                图1
    在这里插入图片描述
                图2
    在这里插入图片描述
                图3
    在/etc/at.deny文件中去掉westos,westos用户又可以设置延时任务了。
    在这里插入图片描述
  • 白名单
    系统中没有白名单,我们要按照黑名单的格式创建一个白名单。
    在这里插入图片描述
    在白名单文件中写入westos用户。
    在这里插入图片描述
    westos用户就可以设置延时任务。
    在这里插入图片描述
    而student用户就不可以设置延时任务。
    在这里插入图片描述
    此外,当黑名单与白名单同时有westos用户时,westos用户依然可以设置延时任务。
    在这里插入图片描述

3.定时任务的设置

命令作用
crontab -e创建定时任务
crontab -l查看定时任务
crontab -r取消定时任务

设置定时任务前,我们首先查看crond.service状态,若是关闭状态,打开服务。再查看设置定时任务的格式。通过man 5 crontab命令查看定时任务设置的格式。
在这里插入图片描述

          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)
  • 方法一
    (1)root用户设置定时任务
    我们在/mnt/目录下创建几个文件,crontab -e命令创建定时任务。
    在这里插入图片描述
    crontab -e命令编写内容如下,这个设定让/mnt/目录下只要有文件每隔一分钟就会被清理。
    在这里插入图片描述
    定时任务的取消与查看。
    在这里插入图片描述
    (2)root用户指定普通用户设置定时任务
    普通用户westos对/mnt/目录设置定时任务失败,因为此用户对/mnt目录没有写权限,所以定时任务时普通用户只对自己有写权限的目录文件进行操作。
    在这里插入图片描述
    在这里插入图片描述
    我们创建一个目录给此目录的权限设定为任何用户都有写权限,就可以解决写权限的问题,如下面的例子,我们的定时任务设定成功。
    在这里插入图片描述
    在这里插入图片描述
    定时任务的查看与取消命令
    在这里插入图片描述
    (2)普通用户设置定时任务
    我们也可以切换到此用户进行定时任务的设置:
    在这里插入图片描述
    定时任务内容:
    在这里插入图片描述
    定时任务的取消与查看
    在这里插入图片描述
  • 方法二
    除了crontab -e命令设置定时任务,我们还可以使用编写/var/spool/cron/root文件来设置定时任务。
    在这里插入图片描述
    /var/spool/cron/root文件中编写的内容及其含义:
    在这里插入图片描述
    我们还可以通过cat命令或crontab -l命令查看定时任务。
    在这里插入图片描述
    对于某些定时任务,当我们不想使用时可以通过crontab -r命令取消,取消后查看定时任务,已经没有任务。
    在这里插入图片描述
  • 系统级的定时设置
    在/mnt目录下创建4个文件,在/etc/cron.d/目录下编写一个文件,文件内容如图2。
    在这里插入图片描述
                图1
    在这里插入图片描述
                图2
  • anacron
    检测crontab的错误,当我们关机错过crontab的任务后,开机时anacron就会检测到之后立即执行。

注意:systemctl stop crond.service 服务关闭后,crontab所有操作不进行

4.定时任务的黑白名单

  • 黑名单
    在定时任务黑名单/etc/cron.deny文件中加入westos用户名,westos用户不可再进行定时任务的设置。
    在这里插入图片描述
    /etc/cron.deny文件中写入的内容。
    在这里插入图片描述
    但是root用户可以指定westos用户设置定时任务,如下图。(文件在上图已经建立好)
    在这里插入图片描述
    定时任务内容:
    在这里插入图片描述
    为不影响下面的实验,取消定时任务。
  • 白名单
    在这里插入图片描述
    /etc/cron.allow文件中写入的内容。
    在这里插入图片描述
    定时任务内容:
    在这里插入图片描述
    此时,其他普通用户不可进行定时任务的设置。
    在这里插入图片描述
    与黑名单一样,root用户也可以指定student用户进行此操作
    在这里插入图片描述
    定时任务的内容:
    在这里插入图片描述

5.临时文件

我们转换到/usr/lib/tmpfiles.d/目录下,查看其中文件,创建一个与其他文件类型相同的文件。
在这里插入图片描述
文件中所写的内容:
含义是:目录 权限 用户 组 文件存在时间。
在这里插入图片描述
编写完文件和/mnt目录下没有任何东西,我们使用systemd-tmpfiles  - -create命令创建出/mnt/westos目录。
在这里插入图片描述
我们在/mnt/westos目录下创建文件111,过8秒后,使用systemd-tmpfiles  - -clean命令清理失效文件,发现/mnt/westos目录下没有任何文件。
创建文件222后,立即使用清理命令,222文件依然存在,再次清理时222文件已经达到了8s的存在时间,222文件失效。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值