Part2.4——Linux下的定时任务与延时任务

目录

一、系统延时任务

1、at命令

2、at任务的黑白名单

(1)为什么要设置任务的黑白名单?

(2)黑名单

(3)白名单

二、系统定时任务

1、crontab时间表示方式<分 时 天 月 周>

2、系统控制crontab的服务

3、crontab用法(用户级定时任务)

用户级定时任务:

4、crontab的黑白名单(用法同at一样)

(1)黑名单

(2)白名单

5、系统级别的任务

三、处理定时任务的输出

四、系统中临时文件的管理方式

具体操作步骤如下:

第一步:编写临时文件管理命令

第二步:命令创建上述任务

第三步:命令根据上述任务清理临时文件

 第四步:将清理临时文件的命令创建为系统级任务

四、本章总结


一、系统延时任务

1、at命令

at命令的两种执行方式:

at  11:11     设定任务执行时间
at now+1min  设定任务1分钟后执行

<at>命令参数:

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

2、at任务的黑白名单

核心文件:<etc/at.deny>和<etc/at.allow>

(1)为什么要设置任务的黑白名单?

答:因为要限制某些普通用户不能执行延迟任务,所以要将其分为黑白名单。

(2)黑名单

<etc/at.deny>                #系统中默认存在,此文件中出现的用户不能执行at命令

(3)白名单

<etc/at.allow>                #系统中默认不存在,当文件被创建后,普通用户不能再执行at命令,只有在此文件中出现的用户才能执行at命令,并且</etc/at.deny>失效。

二、系统定时任务

在规定时间点对任务进行执行

1、crontab时间表示方式<分 时 天 月 周>

* * * * * 每分钟
*/2 * * * * 每两分钟
*/2 09-17 * * * 早9点-晚17点的每两分钟
*/2 */2 * * * 每隔两小时每两分钟
*/2 09-17 3,5 1 5 一月的3号5号和每周五的早9晚5的每两分钟
*/2 09-17 * * 5 每周五的早9晚5的每两分钟

2、系统控制crontab的服务

systemctl  status  crond.service        #查看定时任务的服务状态

3、crontab用法(用户级定时任务)

用户级定时任务:

        指定用户         参数 
crontab   -u   root     -e            #编辑定时任务
crontab   -u   root     -l            #查看任务列表
crontab   -u   root     -r            #移除定时任务

 第一步:编辑定时任务

执行命令<crontab -u root -e>进入编辑模式,编辑定时任务。表示每分钟删除一次/mnt/*的文件。

编辑完成后,系统会把这个任务保存在</var/spool/cron/root>中。

 第二步:查看定时任务

方法一:cat  /var/spool/cron/root

方法二:crontab  -l

 第三步:删除定时任务

crontab -u root -r        #删除超级用户所有的定时任务

 这个命令其实删除的就是</var/spool/cron/root>中的文件。

注意:crontab的定时任务是在“crond.service”服务开启的情况下才会执行,服务没有开启,不会执行定时任务

4、crontab的黑白名单(用法同at一样)

核心文件:<etc/cron.deny>和<etc/cron.allow>

(1)黑名单

<etc/cron.deny>                #系统中默认存在,此文件中出现的用户不能执行crontab命令

(2)白名单

<etc/cron.allow>                        #系统中默认不存在,当文件被创建后,普通用户不能再执行crontab命令,只有在此文件中用户才能执行crontab命令,且</etc/crontab.deny>失效。

5、系统级别的任务

核心目录:</etc/cron.d/>

vim /etc/cron.d/westos         #创建系统级定时任务

无论黑名单还是白名单,都不会影响</etc/cron.d/>目录下定时任务的发起及执行。凡是在此目录下的文件中的定时任务都会自动执行。

因为这是一个存放系统级别任务的目录,拥有最高权限,不会受黑白名单的影响。在这个目录下编辑文件,内容为<* * * * * westos touch /home/westos/file{1..2}>,表示指定时间下westos用户执行创建文件的任务。这里与之前创建<crontab>任务不同的地方是,这里必须指定用户。

 注意:在</etc/cron*>下存在很多文件,在添加“cron.allow”或“cron.deny”文件后,只是限定了指定用户创建新的定时任务的权力,这些用户已经创建好的任务不会受到影响。

三、处理定时任务的输出

一些at命名或crontab命令会有输出的,这些输出将以邮件的方式发送给超级用户

~~~~~~~~~~未完待续~~~~~~~~~~~

四、系统中临时文件的管理方式

临时文件管理的配置文件:在<vim /lib/tmpfiles.d/westos.conf>写入以下命令:

 d    /mnt/westos  1777   root    root     10s
类型   文件文件名称   权限   所有人   所有组   生命周期

具体操作步骤如下:

系统中的临时文件存放目录为</lib/tmpfiles.d/>,可以看到目录下存在很多<.conf>文件,这些文件就是系统运行过程中产生的临时文件。

第一步:编写临时文件管理命令

首先在</lib/tmpfiles.d/>目录下创建<.conf>文件,文件内容表示“d 目录 权限 所有人 所有组 存在周期”。(为了方便测试,文件周期设置的为10s)

第二步:<systemd-tmpfiles>命令创建上述任务

要对这个文件中的内容生效,需要创建守护进程命令。

systemctl-tmpfiles  --create  /lib/tmpfiles.d/westos.conf
#对刚才编写的管理任务的配置文件创建守护进程,令其生效

 执行完创建守护进程命令后,会在</mnt>下出现下图所示文件

第三步:<systemd-tmpfiles>命令根据上述任务清理临时文件

systemd-tmpfiles  --clean  /lib/tmpfiles.d/westos.conf
#按照配置文件中的内容进行清理

先创建了一个文件“testfile0”,然后执行清理命令,但是文件周期不足10秒,所以不会被清理;接着再建立一个文件“testfile1”,再次执行清理命令,会看到文件周期超过10 秒的“testfile0”被清除了,而文件周期没有超过10 秒的“testfile1”没有被清除。

 第四步:将清理临时文件的命令创建为系统级任务<crontab>

将清理临时文件的守护进程命令写成一个<crontab>,让其每小时过1分钟执行一次。

四、本章总结

1、crontab定时任务只有在“crond.service”服务开启的时候才会执行,服务关闭后所有定时任务失效。

2、crontab的黑白名单只会影响普通用户,对超级用户系统级任务没有影响。

3、在</etc/cron*>下存在很多文件,在添加“cron.allow”或“cron.deny”文件后,只是限定了指定用户创建新的定时任务的权力,这些用户已经创建好的任务不会受到影响

4、创建简单的清理系统临时文件的步骤:

Guess you like

Origin blog.csdn.net/Zhaohui_Zhang/article/details/121052921