linux系统延时任务及定时任务
1.系统延时任务
安装 dnf postfix mail ,接受及发送邮件的工具
所以在进行实验之前要进行配置本地仓库
POSTFIX
是一种电子邮件服务器。postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真是一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。
systemctl enable --now postfix
定时任务
[root@localhost libvirt]# at 18:26 设定任务执行时间
warning: commands will be executed using /bin/sh
at> date #任务动作
at> <EOT> #crtl+D 发起任务
job 4 at Sat Aug 1 18:26:00 2020
You have mail in /var/spool/mail/root
延时任务
[root@localhost ~]# at now+1min ##延时1分钟
at> rm -fr /mnt/*
at> <EOT>
at -l | 查看任务列表 |
---|---|
at -c 任务号 | 查看任务内容 |
at -r 任务号 | 取消任务执行 |
邮件 (注意: 当任务有输出时,输出会以邮件的型是发送给at任务的发起者)
[root@localhost libvirt]# mail root -s test messages 发送邮件
Subject: date 正文部分
. 退出
EOT
Null message body; hope that's ok
[root@localhost libvirt]# mail 查看邮件信息
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 2 messages 2 new
>N 1 root Sat Aug 1 18:24 19/699 "date"
N 2 Mail Delivery System Sat Aug 1 18:24 93/3156 "Undelivered M"
& Held 2 messages in /var/spool/mail/root 邮件默认存放路径
[root@localhost ~]# mail --help 查看相关参数
mail: illegal option -- -
Usage: mail -eiIUdEFntBDNHRVv~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users
mail -u root | 查看超级用户邮件 |
---|---|
1 | 查看第一封邮件 |
q | 退出 |
> /var/spool/mail/root | 清空邮件 |
[root@rhel8_nodel network-scripts]# mail root -s test messages
Subject: aaaaaa
.
EOT
Null message body; hope that's ok
[root@rhel8_nodel network-scripts]# mail -u root ##########查看超级用户邮件
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/root": 2 messages 2 new
>N 1 root Sat Aug 1 13:40 19/709 "aaaaaa"
N 2 Mail Delivery System Sat Aug 1 13:40 93/3179 "Undelivered Mail Returned to Sender"
& 1 #############查看任务号为1的邮件
Message 1:
From root@rhel8_nodel.westos.com Sat Aug 1 13:40:05 2020
Return-Path: <root@rhel8_nodel.westos.com>
X-Original-To: root
Delivered-To: root@rhel8_nodel.westos.com
Date: Sat, 01 Aug 2020 13:40:05 +0800
To: messages@rhel8_nodel.westos.com, test@rhel8_nodel.westos.com,
-s@rhel8_nodel.westos.com, root@rhel8_nodel.westos.com
Subject: aaaaaa
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root <root@rhel8_nodel.westos.com>
Status: R
& headers ############### 回到列出的邮件
> 1 root Sat Aug 1 13:40 19/709 "aaaaaa"
N 2 Mail Delivery System Sat Aug 1 13:40 93/3179 "Undelivered Mail Returned to Sender"
& q ###################退出
Held 2 messages in /var/mail/root
2.at任务的黑白名单
/etc/at.deny | 系统中默认存在,在此文件中出现的用户不能执行at |
---|---|
/etc/at.allow | 系统中默认不存在,当文件出现,普通用户不能执行at,只有在名单中的用户可以,并且/etc/at.deny失效 |
当黑白名单中是同一个普通用户,则此用户能使用at,
黑名单
[root@localhost ~]# cat /etc/at.deny
lee 设置用户lee为黑名单
[lee@localhost ~]$ at 12:22 黑名单里的用户不能使用at命令
You do not have permission to use at.
白名单
[root@localhost ~]# touch /etc/at.allow 白名单不存在 新建一个白名单文件,普通用户都无法使用
[westos@localhost ~]$ at 12:22
You do not have permission to use at.
[root@localhost ~]# su - lee
[lee@localhost ~]$ at 12:22 必须切换到相应用户中进行测试
You do not have permission to use at.
[root@localhost ~]# cat /etc/at.allow 白名单写入用户
westos
[root@localhost ~]# su - lee
[lee@localhost ~]$ at 12:22 除白名单里的普通用户都不能用at
You do not have permission to use at.
[lee@localhost ~]$ su - westos
Password:
[westos@localhost ~]$ at 12:22 只有白名单用户可以使用at命令
warning: commands will be executed using /bin/sh
at> date
at> <EOT>
job 7 at Sun Aug 2 12:22:00 2020
[westos@localhost ~]$
3.系统定时任务
3.1 crontab 时间表示方式
[root@rhel8_nodel cron]# cd /etc/cron.d/
[root@rhel8_nodel cron.d]# ls
0hourly raid-check
[root@rhel8_nodel cron.d]# cat 0hourly ###文件编辑格式
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
* 1 2 3 4 | 分钟 小时 哪天 星期几 /表示每… 每两分钟 |
---|---|
* * * * * | 每分钟 |
*/2 * * * * | 每两分钟 |
*/2 09-17 * * * | ##早7-晚5每两分钟 |
*/2 */2 * * * | 每隔2小时每两分钟 |
*/2 09-17 3,5 1 5 | 每个月的3号,5号及每个星期五的9点和17点 每两fenzhong |
*/2 09-17 * * 5 | 每周周五早9晚5每辆分钟 |
3.2系统控制crontab的服务
crond.service ##当程序开启时定时任务生效 (一般默认开启)
3.3crontab的命令(用户级的定时任务)
crontab -e -u
-e:编辑 -u user 设定的用户、
* * * * * 命令
crontab -l -u
查看定时任务
crontab -r -u
删除定时任务
详解来源于博客园
-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
3.4文件方式设定定时任务(系统级的定时任务方式)
vim /etc/cron.d/file
* * * * * username action
* * * * * root rm -fr /mnt/*
定时任务被执行(自行观察时间)
3.5crontab的黑白名单
/etc/cron.deny ##系统中默认存在,在此文件中出现的用户不能执行crontab
/etc/cron.allow ##系统中默认不存在,当文件出现,普通用户不能执行crontab ##只有在名单中的用户可以,并且/etc/at.deny失效
##这两个名单都不会影响/etc/cron.d/目录中定时任务的发起及执行
chmod 777 /mnt/ 更改权限,普通用户可以在此目录中建立文件
[root@localhost ~]# rm -fr /mnt/*
[root@localhost ~]# watch -n 1 ls -lR /mnt/
[root@localhost ~]# cat /etc/cron.deny
lee
[root@localhost cron.d]# cat /etc/cron.d/westos
* * * * * lee touch /mnt/file{1..5}
监控到的结果 lee完成定时任务 说明at黑名单在此处无效
/mnt/:
total 0
-rw-r--r-- 1 lee lee 0 Aug 1 20:01 file1
-rw-r--r-- 1 lee lee 0 Aug 1 20:01 file2
-rw-r--r-- 1 lee lee 0 Aug 1 20:01 file3
-rw-r--r-- 1 lee lee 0 Aug 1 20:01 file4
-rw-r--r-- 1 lee lee 0 Aug 1 20:01 file5
4.系统中临时文件的管理方式(文件超过生命周期被清理)
基本原理:写一个管理自己临时文件的配置文件,/usr/lib/tmpfiles.d/xxxx.conf 文件内容 d /mnt/westos 1777 root root 8s使自己的配置文件生效,在/mnt/westos目录中创建文件,删除临时文件 systemd-tmpfiles --clean /lib/tmpfiles.d/westos.conf 执行临时文件的配置文件 隔8s文件删除
确保实验环境纯净 删掉之前设置的定时任务
/usr/lib/tmpfiles.d/xxxx.conf
管理系统的临时文件的配置文件
vim /usr/lib/tmpfiles.d/westos.conf
目录 名称 权限 用户 用户组 做任务每隔多长时间
d /mnt/westos 1777 root root 8s
systemd-tmpfiles --creat /lib/tmpfiles.d/westos.conf
systemd-tmpfiles --clean /lib/tmpfiles.d/westos.conf
只会清理掉达到生命周期的文件