目录
一、系统延时任务
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、创建简单的清理系统临时文件的步骤: