系统定时任务与延时任务

延时任务

 延时任务是我们规定在几点或者在多久之后让系统执行的某一任务

 设置延时任务的步骤:

  at time(时间)

  dosomething(具体的任务)

  ctrl+d(执行该延时任务)

系统延时命令
at
at -l          查看执行的延时任务
at -c 5      查看任务5的详细信息
at -l 5       查看任务5的基础信息

[root@localhost ~]$ at now+1min       ##在1分钟后
at> echo hello                                       ##执行echo hello 的命令
at> <EOT>                                            ##执行ctrl + d
job at Sun Nov  4 01:33:00 2018      生成此任务的任务号

[root@localhost ~]$ at -l 4           查看任务4的基本信息        
4   Sun Nov  4 01:33:00 2018 a root

[root@localhost ~]$ at -c 5           查看任务5的详细信息

${SHELL:-/bin/sh} << 'marcinDELIMITER21832c28'
echo hello

at命令,黑白名单


/etc/at.deny 黑名单(在白名单不存在时黑名单生效)
/etc/at.allow 白名单(与黑名单同时存在时,白名单无效)
编辑这两个文件,就可以实现at命令对特定用户开放
vim /etc/at.deny
在黑名单中添加gq用户
[root@localhost ~]# su - gq                                          
Last login: Sun Nov  4 01:31:58 CST 2018 on pts/0
[gq@localhost ~]$ at                                           
You do not have permission to use at.                        

可以看到gq用户不能执行at命令

[root@localhost ~]# su - westos
Last login: Sun Nov  4 01:29:23 CST 2018 on pts/0

[westos@westos ~]$ at now+1min
at> echo hello
at> <EOT>
job 5 at Tue Nov  6 14:49:00 2018
[westos@westos ~]$ at -l 5
5    Tue Nov  6 14:49:00 2018 a westos

而westos用户因不在黑名单中依旧可以执行at命令

系统中默认是没有at命令的白名单的,我们先创建这样一个文件

默认全黑,若要允许哪个用户可以使用at命令,则在白名单中写入用户名即可。

可以看到gq用户同时在黑白名单里,但是白名单生效

    编辑白名单写入gq用户

系统定时任务(由crond.service服务提供)

发起定时任务

定时任务可以设定在哪一天哪一小时等循环地做某一件事情,我们可以用man 5 crontab来查看其具体用法

[root@localhost ~]# systemctl status crond.service  查看服务的状态信息
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-11-04 00:32:13 CST; 1h 15min ago
 Main PID: 1224 (crond)
   CGroup: /system.slice/crond.service
           └─1224 /usr/sbin/crond -n

Nov 04 00:32:13 localhost.localdomain systemd[1]: Star...
Nov 04 00:32:13 localhost.localdomain systemd[1]: Star...
Nov 04 00:32:13 localhost.localdomain crond[1224]: (CR...
Nov 04 00:32:14 localhost.localdomain crond[1224]: (CR...
Hint: Some lines were ellipsized, use -l to show in full.

man 5 crontab 查到的信息

1>方式1

[root@localhost ~]# crontab -u root -e       以root用户身份发起定时任务
no crontab for root - using an empty one
crontab: installing new crontab

编辑内容  (注意: * * * * * ==>  分,时,天,月,周)

* * * * *  rm -fr /gaoqi/*    ( 表示每分钟删除/gaoqi/*)

[root@localhost ~]# crontab -u root -l          查看root用户的定时任务
* * * * *  rm -fr /gaoqi/*

[root@localhost ~]# crontab -u root -r         取消root用户的所有定时任务
[root@localhost ~]# crontab -u root -l  
no crontab for root

root@localhost ~]# crontab -u gq  -e          以gq这个用户发起定时任务
 03 22  * * *   rm -fr /mnt/* (编辑内容)         每天的22:03删除/mnt/*    

[root@localhost etc]# cat /var/spool/cron/gq          定时任务生成的文件存放在/var/spool/cron/root 目录
03 22  * * *  rm -fr /mnt/*

2>方式2

编辑的文件其实就是/var/spool/cron/目录下的文件,文件名是指定的用户,没有指定用户就是root用户:

 crontab 命令,黑白名单


/etc/cron.deny 黑名单(在白名单不存在时黑名单生效)
/etc/cron.allow 白名单(与黑名单同时存在时,白名单无效)
编辑这两个文件,就可以实现cron命令对特定用户开放

黑名单的设定

[root@localhost etc]#vim /etc/cron.deny

在黑名单中写入gq用户

[root@westos ~]# su - gq
Last login: Tue Nov  6 15:45:02 EET 2018 on pts/1
[gq@westos ~]$ crontab -e
You (gq) are not allowed to use this program (crontab)
See crontab(1) for more information                

可看到在黑名单中的gq用户无法执行定时命令

[gq@westos ~]$ logout
[root@westos ~]# crontab -u gq -e
crontab: installing new crontab

     退出登陆,可以看到用超级用户身份指定gq用户执行定时命令是可以的

白名单的设定

与延时命令黑名单设置类似

  我的白名单未写入用户,默认全黑。

系统对临时文件的管理

[root@localhost mnt]# cd /etc/cron.d
[root@localhost cron.d]# ls
0hourly  raid-check  sysstat
[root@localhost cron.d]# vim westos
* * * * *   root rm -fr /mnt/*
[root@localhost cron.d]#

[root@localhost cron.d]# cd /etc/cron.daily/
[root@localhost cron.daily]# ls
0yum-daily.cron  logrotate  man-db.cron  mlocate  rhsmd
[root@localhost cron.daily]# ana
anaconda
anaconda-cleanup
anaconda-disable-nm-ibft-plugin
anacron   错过的命令,会在开启服务时立即执行
analog
[root@localhost cron.daily]# anacron

[root@localhost cron.d]# cd /usr/lib/tmpfiles.d/
[root@localhost tmpfiles.d]# ls
abrt.conf                 rpcbind.conf
cups.conf                 rpm.conf
cups-lp.conf              samba.conf
etc.conf                  sap.conf
gvfsd-fuse-tmpfiles.conf  selinux-policy.conf
initscripts.conf          setroubleshoot.conf
iscsi.conf                spice-vdagentd.conf
legacy.conf               subscription-manager.conf
libselinux.conf           systemd.conf
libstoragemgmt.conf       systemd-nologin.conf
lvm2.conf                 tmp.conf
mdadm.conf                tuned.conf
pam.conf                  var.conf
ppp.conf                  x11.conf
radvd.conf
在这个目录下,以.conf结尾的文件都是临时文件处理的配置文件,可以打开,作为参考模版

[root@localhost tmpfiles.d]  vim westos.conf
d /mnt/westos 777 root root 20s
[root@localhost tmpfiles.d]# systemd-tmpfiles --creat /usr/lib/tmpfiles.d/*
[root@localhost tmpfiles.d]# cd /mnt
[root@localhost mnt]# touch /mnt/westos/file1

猜你喜欢

转载自blog.csdn.net/weixin_43273168/article/details/83792371