Linux 系统定时任务及延时任务

一,延迟任务
ctrl+d 发起任务
新建文件用来测试,发起监控

[root@foundation68 ~]# mkdir /test
[root@foundation68 ~]# touch /test/test{1..6}
[root@localhost ~]# watch -n 1 'ls -l /test/*' (图1)

(1)at 时间
在规定的时间完成任务

[root@localhost ~]# at 09:21 ##在09:21删除/mnt/*
at> rm -fr /mnt/*

在这里插入图片描述

(2)ctrl+d 发起任务 是上面写的任务开始执行

在这里插入图片描述

在这里插入图片描述

(3)at -r 任务编号 撤销任务
在这里插入图片描述

(4)at now+1min 在接下来一分钟执行此任务
(5)at -l 列出未执行的任务
(6)at -c 任务编号 查看任务内容

(7)用户的at权限
1》at权限的用户黑名单(当没有白名单时黑名单生效,当白名单存在时,黑名单失效,只有在白名单的用户拥有at权限)
黑名单:/etc/at.deny

[root@foundation68 ~]# cd /home
[root@foundation68 home]# ls
kiosk  student
[root@foundation68 home]#
 [root@foundation68 ~]# vim /etc/at.deny  ##将student添加进黑名单
[root@foundation68 ~]#

切换用户到student,执行at命令,不可执行

[root@foundation68 home]# su - student
Last login: Sat Nov  3 20:36:06 CST 2018 on pts/0
[student@foundation68 ~]$ at mow+1min
You do not have permission to use at.
[student@foundation68 ~]$  

切换用户到kiosk,执行at命令,可执行

[student@foundation68 ~]$ su - kiosk
Password: 
Last login: Tue Nov  6 10:20:16 CST 2018 on :0
[kiosk@foundation68 ~]$ at now+1min
at> touch file4
at> <EOT>
job 3 at Tue Nov  6 15:36:00 2018
[kiosk@foundation68 ~]$ ls
Desktop    Downloads  Music     Public     Videos
Documents  file4      Pictures  Templates
[kiosk@foundation68 ~]$ 

2》白名单
系统中不存在白名单,新建文件作为白名单,此时黑名单失效。只有在白名单的用户有at权限
将student添加至白名单

[root@foundation68 ~]# touch /etc/at.allow
[root@foundation68 ~]# vim /etc/at.allow
[root@foundation68 ~]# 

分别用student和kiosk用户使用at

[root@foundation68 ~]# su - student
Last login: Tue Nov  6 15:43:28 CST 2018 on pts/2
[student@foundation68 ~]$ at now+1min
at> touch file1
at> <EOT>
job 5 at Tue Nov  6 15:47:00 2018

[student@foundation68 ~]$ su - kiosk
Password: 
Last login: Tue Nov  6 15:35:04 CST 2018 on pts/2
[kiosk@foundation68 ~]$ at now+1min
You do not have permission to use at.
[kiosk@foundation68 ~]$ 

二、定时任务

1、linux 中的crond服务
crond服务通常被放在/etc/init.d/crond,这样就可以在系统重启后自动启动crond服务。

[root@foundation68 ~]# cd /etc/cron.
cron.d/       cron.daily/   cron.hourly/  cron.monthly/ cron.weekly/

linux中的用户使用contab命令来配置corn任务,crontab在/etc目录下面存在cron.d, cron.daily,cron.weekly,cron.monthly,cron.hourly五个目录和crontab文件

cron.d:系统自动定期需要做的人物,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面,如果是按小时,按天,按星期,按月来执行的话,则可以放到相应的目录下面
cron.daily是每天执行一次任务
cron.weekly是每周执行一次任务
cron.monthly是每月执行一次任务
cron.hourly是每小时执行一次任务

规定时间作规定的事
文件写入格式
1、用户级的crond
(1)开启crond服务

 [root@foundation68 ~]# systemctl status crond.service 
crond.service - Command Scheduler
 Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
 Active: active (running) since Tue 2018-11-06 10:20:06 CST; 5h 58min ago
Main PID: 1439 (crond)
 CGroup: /system.slice/crond.service
         └─1439 /usr/sbin/crond -n

Nov 06 10:20:06 foundation68.ilt.example.com systemd[1]: ...
Nov 06 10:20:06 foundation68.ilt.example.com systemd[1]: ...
Nov 06 10:20:07 foundation68.ilt.example.com crond[1439]: ...
Nov 06 10:20:09 foundation68.ilt.example.com crond[1439]: ...
Hint: Some lines were ellipsized, use -l to show in full.
[root@foundation68 ~]# 

(2)查看写入格式

[root@localhost ~]# man 5 crontab

在这里插入图片描述

例如

*/2          10-13          *       2,5     3

每格2分钟 10点-13点 每天 2月和5月 周三

(3)设置定时任务

[root@foundation68 ~]# crontab -u root -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@foundation68 ~]# 

每天每时每分钟都删除mnt下的文件,此处路径必须时绝对路径

* * * * *    rm -fr /mnt/*

(4)查看指定用户的定时任务

[root@foundation68 ~]# crontab -u root -l

* * * * * rm -fr /test/*

(5)普通用户定时设定

[root@foundation68 ~]# touch /home/student/westos{1..6}
[root@foundation68 ~]# crontab -u student -e
no crontab for student - using an empty one
crontab: installing new crontab
[root@foundation68 ~]# 
* * * * *   rm -fr /home/student/*

(6)也可以在/var/spool/cron/用户名 编辑定时任务

[root@localhost ~]# cat /var/spool/cron/root
[root@localhost ~]# vim /var/spool/cron/root 

* * * * *    rm -fr /mnt/*

(7)删除指定用户的定时任务

[root@foundation68 ~]# crontab  -u student -r
[root@foundation68 ~]# crontab  -u student -l
no crontab for student
[root@foundation68 ~]#

(8)用户的crontab权限黑白名单(与用户的at权限的黑白名单相似)
1》用户的crontab权限黑名单
将student用户添加进黑名单

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

切换至student用户

[student@foundation68 ~]$ crontab -e
You (student) are not allowed to use this program (crontab)
See crontab(1) for more information
[student@foundation68 ~]$ 

切换至kiosk用户,有crontab权限

  [student@foundation68 ~]$ su - kiosk
Password: 
Last login: Tue Nov  6 15:49:39 CST 2018 on pts/2
[kiosk@foundation68 ~]$ crontab -e
no crontab for kiosk - using an empty one
crontab: no changes made to crontab
[kiosk@foundation68 ~]$ 

2》用户的crontab权限白名单
新建白名单文件,将student添加进白名单,此时黑名单失效

[root@foundation68 ~]# touch /etc/cron.allow
[root@foundation68 ~]# vim /etc/cron.allow
[root@foundation68 ~]# 

分别切换至student用户和kiosk用户

[root@foundation68 ~]# su - student
Last login: Tue Nov  6 17:06:37 CST 2018 on pts/2
[student@foundation68 ~]$ crontab -e
crontab: no changes made to crontab
[student@foundation68 ~]$ su - kiosk
Password: 
Last login: Tue Nov  6 17:07:26 CST 2018 on pts/2
[kiosk@foundation68 ~]$ crontab -e
You (kiosk) are not allowed to use this program (crontab)
See crontab(1) for more information
[kiosk@foundation68 ~]$ 

可以看出,由于student在白名单而kiosk没有在白名单,因此student用户有crontab权限,kiosk没有

2、系统级的crond

(1)系统级的crond文件都在/etc/cron.d
在/etc/cron.d目录下建立文件写入定时内容(内容需要注名用户)设置系统定时任务

[root@foundation68 ~]# cd /etc/cron.
cron.d/       cron.daily/   cron.hourly/  cron.monthly/ cron.weekly/
[root@foundation68 ~]# cd /etc/cron.d
[root@foundation68 cron.d]# ls
0hourly  raid-check  sysstat
[root@foundation68 cron.d]# 

建立文件写入定时内容(内容需要注名用户)设置系统定时任务

[root@localhost cron.d]# vim westos
[root@localhost cron.d]# 

写入内容

33 21 * * *  root rm -fr /test/*  

设置21:33删除/test/下的文件,在21:30时创建文件并关机,
(2)控制系统中的临时文件
临时文件所在目录/usr/lib/tmpfiles.d/

[root@foundation68 cron.d]# cd /usr/lib/tmpfiles.d/
[root@foundation68 tmpfiles.d]# ls
abrt.conf                 mdadm.conf           setroubleshoot.conf
etc.conf                  pam.conf             spice-vdagentd.conf
gvfsd-fuse-tmpfiles.conf  ppp.conf             subscription-manager.conf
httpd.conf                python.conf          systemd.conf
initscripts.conf          radvd.conf           systemd-nologin.conf
iscsi.conf                rpcbind.conf         tmp.conf
legacy.conf               rpm.conf             tuned.conf
libselinux.conf           samba.conf           var.conf
libstoragemgmt.conf       sap.conf             x11.conf
lvm2.conf                 selinux-policy.conf

文件tmp.conf写明了临时文件定时管理的格式

[root@foundation68 tmpfiles.d]# vim tmp.conf 
[root@foundation68 tmpfiles.d]# 

新建临时文件d的管理目录

[root@localhost tmpfiles.d]# vim test.conf
[root@localhost tmpfiles.d]#

d /test/ 777 root root 8s
目录/test/下的文件在系统中存在8s
[root@foundation68 test]# watch -n 1 ‘ls -l /test/’
此时监控无数据
在这里插入图片描述

在目录下创建文件

创建目录test.conf
[root@foundation68 test]# systemd-tmpfiles --create /usr/lib/tmpfiles.d/*
在这里插入图片描述

清理失效的文件
[root@foundation68 test]# systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值