linux系统延迟任务
一、延迟任务(一次性)
比如:今天设置了延迟任务,今天下午清理文件,延迟任务执行了,明天就不会执行,除非再设置一次
1.1 环境
[root@trade test1]# touch yan{1..3}
[root@trade test1]# ls -l
total 0
-rw-r--r--. 1 root root 0 Aug 29 10:50 yan1
-rw-r--r--. 1 root root 0 Aug 29 10:50 yan2
-rw-r--r--. 1 root root 0 Aug 29 10:50 yan3
[root@trade test1]# watch -n 1 ls -l /root/test1
监控
1.2 创建延迟任务
开启新窗口,在x时间清空掉/root/test1的文件
ctrl+d任务发起
[root@trade ~]# at 11:00
at> rm -fr /root/test1/*
ctrl+d生效后
at> <EOT>
job 1 at 2022-08-29 11:00
11:00:00准时清除掉该目录下的文件
多个任务,一行一行写,写完ctrl +d
或者这样写
单位也可以是1day
[root@trade ~]# at now+1min
at> rm -fr /root/test1/*
at> <EOT>
job 6 at 2022-08-29 13:21
1.3 查看任务列表
[root@trade ~]# at 11:05
at> touch /root/test1/ywq
at> <EOT>
job 3 at 2022-08-29 11:05
[root@trade ~]# at -l
3 2022-08-29 11:05 a root
1.4 查看任务内容
很长,看最后一行,就知道任务内容
[root@trade ~]# at -c 3
at -l
查到任务05分执行,20分时任务执行完成了
1.5取消任务内容
[root@trade ~]# at -l
5 2022-08-29 13:30 a root
新版本这样取消
[root@trade ~]# at -r 5
老版本这样取消
[root@trade ~]# atrm 5
[root@trade ~]# at -l
[root@trade ~]#
二、at命令黑白名单
默认任意用户都可以使用at命令
这样首先安全性不高,其次任意用户发起at命令会使得系统负载变高
系统中默认存在黑名单
[root@trade ~]# ls -l /etc/at.deny
-rw-r--r--. 1 root root 1 Jan 20 2012 /etc/at.deny
[root@trade ~]# ls -l /etc/at.allow
ls: cannot access /etc/at.allow: No such file or directory
写法
[root@trade ~]# man 5 at.deny
有at.allow的时候,at.deny不生效
黑名单
[root@trade ~]# su - yan
[yan@trade ~]$ at 13:40
at> ^C[yan@trade ~]$ logout
[root@trade ~]# vim /etc/at.deny
[root@trade ~]# cat /etc/at.deny
yan
[root@trade ~]# su - yan
[yan@trade ~]$ at 13:40
You do not have permission to use at.
[yan@trade ~]$ logout
[root@trade ~]# vim /etc/at.deny
[root@trade ~]# cat /etc/at.deny
[root@trade ~]# su - yan
[yan@trade ~]$ at 13:40
at> ^C
白名单
有白名单,黑名单不生效
除了白名单的用户和超级用户可以使用at命令以外,所有用户都不能使用at命令
[root@trade ~]# touch /etc/at.allow
[root@trade ~]# su - oracle
[oracle@trade ~]$ at now+1min
You do not have permission to use at.
[oracle@trade ~]$ logout
[root@trade ~]# su - yan
[yan@trade ~]$ at now+1min
You do not have permission to use at.
[yan@trade ~]$ logout
[root@trade ~]# vim /etc/at.allow
[root@trade ~]# cat /etc/at.allow
oracle
[root@trade ~]# su - oracle
[oracle@trade ~]$ at now+1min
at> ^C[oracle@trade ~]$ logout
[root@trade ~]# su - yan
[yan@trade ~]$ at now+1min
You do not have permission to use at.
[yan@trade ~]$ logout
END