linux基础(二十)延时及定时任务、临时文件管理

来源:互联网 发布:淘宝980ti2399能买吗 编辑:程序博客网 时间:2024/06/07 12:43

系统延时任务

at命令发起的延时间任务都是一次性的

一、格式:at+time

[root@client1 ~]# at 02:15

at> touch /mnt/file<EOT>           ##延迟动作,表示在/mnt下创建一个file

at> <EOT>        ##ctrl+d表示发起动作,可以退出编辑界面

job 1 at Mon Nov 13 02:15:00 2017  

##表示在215分自动执行touch /mnt/file这个动作

二、参数

1at -l | atq #查看当前任务

[root@client1 ~]# at -l

1 Mon Nov 13 02:15:00 2017 a root   ##1代表任务号

[root@client1 ~]# atq

1 Mon Nov 13 02:15:00 2017 a root

2atrm  | at -d  +任务号 #取消指定任务

[root@client1 ~]# at -l

2 Mon Nov 13 02:22:00 2017 a root

[root@client1 ~]# at -d 2

[root@client1 ~]# at -l

[root@client1 ~]#

3at -c +任务号 #查看任务内容

[root@client1 ~]# at -l

3 Mon Nov 13 02:25:00 2017 a root

[root@client1 ~]# at -c 3

         ...

${SHELL:-/bin/sh} << 'marcinDELIMITER1d7b33c2'

touch /mnt/file

 

marcinDELIMITER1d7b33c2

4at now+1min #延迟一分钟

[root@client1 ~]# at now+1min

at> rm -f /mnt/file

at> <EOT>

job 4 at Mon Nov 13 02:30:00 2017

5at -f file     #延迟执行文件中的内容

[root@client1 ~]# at 02:35 -f mission 

job 6 at Mon Nov 13 02:35:00 2017

[root@client1 ~]# cat mission 

touch /mnt/file

6at -m #延迟命令没有输出时仍然发送邮件给执行者

一般延迟动作写类似touch file这样的不会发送邮件,但加上-m可以打破这个规律

[root@client1 ~]# at 02:41 -m

at> touch /mnt/file

at> <EOT>

job 8 at Mon Nov 13 02:41:00 2017

[root@client1 ~]# mail

Heirloom Mail version 12.5 7/5/10.  Type ? for help.

"/var/spool/mail/root": 2 messages 1 new

    1 Anacron               Sat Oct 21 21:46  21/803   "Anacron job 'cron.dai"

>N  2 root                  Mon Nov 13 02:41  13/483   "Output from your job "

& 2

Message  2:

From root@client1.localdomain  Mon Nov 13 02:41:01 2017

Return-Path: <root@client1.localdomain>

X-Original-To: root

Delivered-To: root@client1.localdomain

Subject: Output from your job        8

To: root@client1.localdomain

Date: Mon, 13 Nov 2017 02:41:01 +0800 (CST)

From: root@client1.localdomain (root)

Status: R

 

 

tip:q退出

7at -M #延迟命令有输出时但不发送邮件给执行者

一般延迟动作写类似echo hello这样的会发送邮件,但加上-M可以打破这个规律

三、at 命令的执行权力设定 

默认系统中全部用户 都有执行at命令的权力

1.用户黑名单

默认情况下,系统中是存在用户黑名单的,这个名单的路径

/etc/at.deny      ##用户黑名单,此名单默认为空,并且在白名单不存在时生效 

vim /etc/at.deny

student     ##student使用at命令的权力被禁止

测试:

[root@server1 ~]# vim /etc/at.deny 

student  

[root@server1 ~]# su - student
Last login: Tue Oct 31 23:03:04 CST 2017 on pts/0
[student@server1 ~]$ at 12:00
You do not have permission to use at.

2.用户白名单

默认系统中是不存在at的白名单的 
但是当白名单出现,系统用户除名单中出现的用户以及root 
其他用户均不能执行at命令

touch /etc/at.allow   #建立用户白名单,当白名单出现,黑名单失效

测试:

[root@server1 student]# touch /etc/at.allow

student  

[root@server1 student]# vim /etc/at.allow 
[root@server1 student]# su - student
Last login: Thu Nov  2 11:51:31 CST 2017 on pts/0
[student@server1 ~]$ at now+1min
at> cd /mnt<EOT>
job 12 at Thu Nov  2 11:58:00 2017
可以看到刚才黑名单中的student失效了,并且student以外的用户不能使用at命令

系统定时任务

写入程序的时间时永久保存的

一、crontab执行方法

这个命令由crond.service 服务提供 

1.方法一:

crontab -e -u+用户名称(-u+用户名可以不写,就表示使用当前用户)

内容格式:分   时   天   月   周   动作


crontab -l  #列出当前用户的cron任务,同样可以使用“-u 用户名称”方式

crontab -r  #删除当前用户的cron任务,同样可以使用“-u 用户名称”方式

2.方法二:

/var/spool/cron/*          ##cron任务记录文件存放位置,不同用户的定时任务会有这个用户的名字文件。直接更改这个文件里面的内容和用crontab -e效果是一样的,crontab -e命令其实也只是打开了这个目录下的相应用户文件让你编辑而已。

测试:

[root@server1 ~]# ls /var/spool/cron/
root  student
[root@server1 ~]# cat /var/spool/cron/root 
* * * * * touch /mnt/file1
[root@server1 ~]# cat /var/spool/cron/student 
* * * * * touch /mnt/file2

二、crontab命令使用控制

1.用户黑名单

默认情况下,系统中只存在黑名单,当白名单被建立,黑名单失效

/etc/cron.deny   ##在此名单中的用户不能执行crontab

vim /etc/cron.deny

student           ##student用户不能执行crontab

我们可以看到/etc/cron.deny是默认存在的

2.白名单 
默认情况下,系统中只存在黑名单,当白名单被建立,黑名单失效

/etc/cron.allow   ##用户白名单,当此名单出现,除root用户及名单中的用户,其他用户不能执行crontab

touch /etc/cron.allow  ##建立白名单

我们可以看到,默认是没有/etc/cron.allow这个文件的。

vim /etc/cron.allow 
student           ##只有student和root用户可以执行crontab,并且会使黑名单里的student限制失效。 

三、其他方式发起定时任务

vim /etc/cron.d/文件             #可以设定多个用户身份cron

               用户  动作

测试:

vim /etc/cron.d/aaa             #aa这个文件名字随意

* * * * * root touch /tmp/rootfile  

* * * * * server1 touch /tmp/server1file  

这个文件表示每分钟root用户在/tmp下建立rootfile;每分钟server1用户在/tmp下建立server1file文件

##这个定时任务自成一体,是不受crontab黑白名单限制的,crontab名单限制的只是某个用户不能使用crontab命令而已。而这里的定时任务原理是root为发起者(当然要保证写这个文件的是root用户),通知某一个或几个普通用户做什么什么动作,因此和crontab并不能影响root的决策。

watch -n 1 ls -l /tmp/     #监控tmp目录下文件
1分钟之前: 


1分钟之后:


可以看到,在aaa中配置的让哪个用户建立就会产生属于哪个用户名和组的文件。

系统临时文件管理

#系统中服务在正常运行时会产生临时文件

1.创建配置任务

/usr/lib/tmpfiles.d/*.conf ##系统中临时文件的配置,*这里的名字可以随意起

文件类型     文件名称     文件权限 文件所有人 文件所有组 文件存在时间

d                /mnt/redhat        777       root                root             100s

##表示在/mnt下创建redhat目录并且只存在100s

2.执行配置文件

systemd-tmpfiles --create /usr/lib/tmpfiles.d/* ##执行临时文件配置,*为刚才创建的文件名字

3.经过100秒之后执行下面命令才可以让redhat目录消失,因此可以把上面那条和下面这条命令都写入crontab任务每分钟执行就达到了创建临时目录/文件的目的

systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* ##清理临时文件,*为刚才创建的文件名字




















原创粉丝点击