系统定时任务及延时任务
一.at(延时任务)命令的基本用法
[root@foundation17 ~]# at now+1min ###1分钟后执行以下命令
at> mkdir ./wrh{1..3}
<EOT> ####ctrl+d发起任务
job 1 at Sun Oct 29 13:52:00 2017
[root@foundation17 ~]# at -l
[root@foundation17 ~]# ls
anaconda-ks.cfg file rht-ks-post.log wrh2
Create_vm.sh foundation-config-post.log rht-ks-pre.log wrh3
Documents ks.cfg wrh1
[root@foundation17 ~]# at now+2min
at> rm -fr ./wrh{1..3}
at> <EOT>
job 2 at Sun Oct 29 13:55:00 2017
[root@foundation17 ~]# at -l
2 Sun Oct 29 13:55:00 2017 a root
[root@foundation17 ~]# ls
anaconda-ks.cfg Documents foundation-config-post.log rht-ks-post.log
Create_vm.sh file ks.cfg rht-ks-pre.log
[root@foundation17 ~]#
at -m ###显示没有输出的邮件
-c 文件id ###列出延时任务
[root@foundation17 ~]# at -c 4
touch file{1..3}
-l ###列出id
[root@foundation17 ~]# at 14:24
at> touch file{1..3}
at> <EOT>
job 4 at Sun Oct 29 14:24:00 2017
[root@foundation17 ~]# at -l 4
4 Sun Oct 29 14:24:00 2017 a root
-r 文件id ###删除此id的任务
-M ###让有输出的任务不产生邮件
-f ###用文件内记录的命令作为延迟任务的命令
二.at命令的使用控制
默认系统中全部用户都有执行at命令的权力
at命令的黑白名单 当白名单建立,黑名单失效
1.黑名单
默认情况下。系统存在用户黑名单
/etc/at.deny ###默认为空
写入student ####禁止student用户使用at命令
2.白名单
默认系统中是不存在at的白名单的
[root@foundation17 ~]# touch /etc/at.allow
[root@foundation17 ~]# vim /etc/at.allow
student #####把student用户加入白名单
但白名单设定后,系统中除白名单
中出现的用户以及root用户
[root@foundation17 ~]# at now+1min
at> touch opo
at> <EOT>
job 7 at Sun Oct 29 14:51:00 2017 ####root用户可以执行
其他用户均不能执行at命令
[student@foundation17 ~]$ at 14:42
at> touch fffff
at> <EOT>
job 5 at Sun Oct 29 14:42:00 2017 #####student可执行at命令
[westos@foundation17 ~]$ at now+1min
You do not have permission to use at. #####westos不能执行at命令
####root用户和白名单中的student可以使用at命令而westos用户则不能
[root@foundation17 ~]# vim /etc/at.allow
student
westos
#####把westos加入白名单
[westos@foundation17 ~]$ at now+1min
at> touch ooooo
at> <EOT>
job 6 at Sun Oct 29 14:49:00 2017
[westos@foundation17 ~]$ ####westos可执行at命令
三.cron(定时任务) 代替人在指定的时间去完成一个任务
cron计划任务默认root用户与非root用户都可以执行,当然如果在安全方面想禁用这部分用户,则可以通过两个文件来解决:
-
cron.allow
-
cron.deny
cron.allow:定义允许使用crontab命令的用户
cron.deny:定义拒绝使用crontab命令的用户
这两个文件有优先级,普通用户在执行crontab命令的时候
1、系统先检测cron.allow文件是否存在;如果存在,则检测文件中存在的用户中是否有当前用户,检测通过则开始执行,检测不通过直接提示该用户没有执行权限
2、当系统没有检测到cron.allow文件存在的时候,则接下来检测cron.deny文件,看当前用户是否被deny掉,
如果没有在cron.deny文件中检测到当前运行crontab的用户,则该命令可以成功执行,如果有检测到该用户在cron.deny文件中,则直接提示该用户没有执行权限
1.
cron此程序由crond.service 服务提供
写入程序的时间和时间是永久保存的
2.cron设定方式
crontab -e 【-u 用户名称(可不写)】
分钟 小时 天 月 周 事件
58 08 * * * rm -fr /mnt/text/* ###每天8:58删除mnt/text中的所有内容
58 08 1,15 * * rm -fr /mnt/text/* ###每月1号和15号的8:58分删除mnt/text下内容
[root@foundation17 ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@foundation17 ~]# crontab -l ####列出当前用户定时任务
* * * * * touch /mnt/file{1..4}
*/2 * * * * rm -fr /mnt/*
[root@foundation17 ~]#
/var/spool/cron/* ####cron任务记录文件存放位置
3.cron的黑白名单
默认情况下,系统只存在黑名单,当白名单建立,黑名单失效
白名单建立后除root用户和白名单里的用户其他用户不能执行crontab
1>黑名单
/etc/cron.deny ###在此名单中用户禁止执行crontab
vim /etc/cron.deny
student ###student禁止执行crontab
2>白名单
touch /etc/cron.allow ###建立白名单
vim /etc/cron.allow
student ####把student加入白名单 黑名单失效
4.文件方式定义crontab
1>
vim /var/spool/cron/用户名称 ####以某个用户身份执行cron,文件名称必须和用户名称一致
分 时 天 月 周 动作
2>
vim /etc/cron.d/文件 ####设定多个用户身份执行crontab
[root@foundation17 ~]# vim cron.sh ###
#!/bin/bash
cat >> /etc/cron.d/text <<eof
* * * * * root touch /tmp/file{1..2}
* * * * * student touch /tmp/file{3..4}
eof
####cron.sh脚本没有可执行权限 在执行前应该给其加上x权限 然后用 ./cron.sh 直接调用