系统延时任务
延时任务:在某段时间之后或者在某个固定的时间执行设定的任务,该任务只执行一次。
1 at
at 固定的时间
[root@foundation47 ~]# date #查看当前时间
Sat Apr 13 13:27:38 CST 2019 #显示时间
[root@foundation47 ~]# at 13:29 #设定任务执行时间
at> touch Desktop/file # 设定任务的操作命令
at> <EOT> #ctrl+d 发起延时任务
at now+一段时间
[root@foundation47 ~]# at now+1min #设定任务执行时间 1分钟之后
at> rm -fr Desktop/file #设定任务的操作命令
at> <EOT> #ctrl+d 发起延时任务
job 3 at Sat Apr 13 13:36:00 2019
**at -l #查看延时任务列表
at -c 任务号 # 查看延时任务内容
at -r 任务号 # 删除该延时任务
- 当延时任务有输出时候,并不是输出在终端上,而是以邮件的形式发送给任务的发起者。
执行date命令会输出当前时间:
[root@foundation47 ~]# date
Sat Apr 13 13:52:52 CST 2019
使用超级用户延时执行date命令,并没有时间输出到该终端,并且该延时任务已经执行
[root@foundation47 ~]# at 13:56 #设定13:56执行
at> date # date命令
at> <EOT>
job 4 at Sat Apr 13 13:56:00 2019
[root@foundation47 ~]# at -l #查看任务存在
4 Sat Apr 13 13:56:00 2019 a root
[root@foundation47 ~]# at -l # 查看任务已经执行不存在 但是终端上并没有显示输出的时间
[root@foundation47 ~]#
查看用户的邮件 mail -u 用户名
mail -u root# 查看超级用户的邮件
2 # 查看第二封邮件的详细信息
q # 退出
[root@foundation47 ~]# mail -u root # 查看超级用户的邮件
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/root": 3 messages 3 new #显示存在三封邮件
>N 1 user@localhost.ilt.e Mon Mar 25 01:28 1334/101900 "[abrt] nautilus: na"
N 2 user@localhost.ilt.e Sat Apr 6 22:46 205/10467 "[abrt] : WARNING: at "
N 3 user@localhost.ilt.e Wed Apr 10 17:59 1189/94359 "[abrt] nautilus: nau"
& 2 # 查看第二封邮件的详细星系
Message 2: # 显示内容
From user@localhost.ilt.example.com Sat Apr 6 22:46:50 2019
Return-Path: <user@localhost.ilt.example.com>
X-Original-To: root@localhost
Delivered-To: root@localhost.ilt.example.com
Date: Sat, 06 Apr 2019 22:46:40 +0800
From: user@localhost.ilt.example.com
To: root@localhost.ilt.example.com
Subject: [abrt] : WARNING: at drivers/gpu/drm/drm_irq.c:1326
drm_wait_one_vblank+0x184/0x1d0 [drm]()
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
Status: R
reason: WARNING: at drivers/gpu/drm/drm_irq.c:1326 drm_wait_one_vblank+0
x184/0x1d0 [drm]()
cmdline: BOOT_IMAGE=/vmlinuz-3.10.0-514.el7.x86_64 root=/dev/mapper/rhel_
foundation47-root ro rd.lvm.lv=rhel_foundation47/root rd.lvm.lv=rhel_foundation4
7/swap rhgb quiet rd.shell=0 LANG=en_US.UTF-8
hostname: foundation47.ilt.example.com
count: 1
abrt_version: 2.1.11
analyzer: Kerneloops
& q # 退出查看邮件
Held 3 messages in /var/mail/root
You have mail in /var/spool/mail/root
[root@foundation47 ~]#
邮件的存放位置
/var/spool/mail/用户名 :每一个用户的邮件会被记录在以其用户名为名称的文件中。
> /var/spool/mail/root #清空root用户的邮件
[root@foundation47 ~]# ls /var/spool/mail/ # 查看该目录
kiosk root rpc # 存在三个文件 分别为三个用户的邮件文件
[root@foundation47 ~]# mail -u root # 查看超级用户的邮件
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/root": 3 messages 2 unread # 存在三封邮件
>U 1 user@localhost.ilt.e Mon Mar 25 01:28 1335/101910 "[abrt] nautilus: na"
2 user@localhost.ilt.e Sat Apr 6 22:46 206/10478 "[abrt] : WARNING: at "
U 3 user@localhost.ilt.e Wed Apr 10 17:59 1190/94369 "[abrt] nautilus: nau"
& ^CInterrupt
& Held 3 messages in /var/mail/root
[root@foundation47 ~]# > /var/spool/mail/root # 清空超级用户的邮件文件
[root@foundation47 ~]# mail -u root
No mail for root # 没有邮件了 被清空可
[root@foundation47 ~]#
2 延时任务的黑白名单
- 延时任务的黑名单 /etc/at.deny
系统中默认存在,出现在黑名单中的用户将无法使用at设定延时任务。
- 延时任务的白名单 /etc/at.allow
系统中默认不存在,如果自己创建,黑名单失效;只有出现在白名单中的用户才能使用at设定延时任务,超级用户不受限制。
系统定时任务
1 crontab 时间表示方式
在使用定时任务时候,需要给出执行任务的时间,时间格式如下:
* * * * * #共五部分,依次表示 分钟 小时 天 月 星期
例如:
* * * * * #表示每分钟
*/5 * * * * #表示每五分钟
*/5 */4 * * * #表示每隔四小时,然后每五分钟
*/5 9-11 * * * #表示9点到11点 每隔五分钟
*/5 9-11 10,20 9 5 #表示9月10号,20号以及每个星期五的9-11点每隔5分钟
*/5 11-12 * * 6 #表示每周六11-12点 每隔五分钟
2 crontab
crontab -e -u #指定用户创建定时任务
crontab -l -u #查看指定用户的定时任务
crontab -r -u # 取消指定用户的定时任务
3系统控制crontab的服务
crontab由crond.service 服务控制。当该服务开启时,所设定的定时任务才能生效。
4 文件的方式设定定时任务
创建/etc/cron.d/xxx 文件 ,在该文件中编写需要执行的定时任务
任务编写格式:* * * * * 用户(执行该任务的) 任务操作
5 crontab 的黑白名单
-
crontab 的黑名单
/etc/cron.deny 系统中默认存在,出现在黑名单中的用户将无法使用crontab设定定时任务。
-
crontab 的白名单
/etc/cron.allow 系统中默认不存在,如果自己创建,黑名单失效,只有出现在白名单中的用户才能使用crontab设定定时任务,超级用户不受限制。
-
crontab 的黑白名单不影响使用文件方式设定的定时任务,不论文件方式设定的定时任务的执行者在不在黑白名单中都可以成功执行设定的定时任务
系统中临时文件的管理
systemd-tmpfiles 系统用来创建、管理、删除临时文件的命令。
临时文件都存在有效期,当其有效期过了之后就可诶被清理,但是有效期没过就不能被清理。所以设置定时任务对系统的临时文件进行清理,在每次清理时过期的文件会被清理掉,只要设置合适的清理周期,就能保证系统中临时文件不会占用大量资源。
下面模拟临时文件的清理:
- cd /usr/lib/tmpfiles.d/
/usr/lib/tmpfiles.d/ 中的.conf文件描述了 systemd-tmpfiles 如何创建、清理、删除临时文件和目录,记录了对临时文件的规范。 - 创建xxx.conf 文件,并写入规范
- systemd-tmpfiles --create /usr/lib/tmpfiles.d/*
编写一个临时目录的规范文件,并扫描该规范文件创造出该目录 - systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*
使用该指令对临时文件的规范文件进行扫描,过期的临时文件会被清理