Linux下的定时任务及延迟任务
一、延迟任务
系统延迟任务是系统任务将在规定的时间或者在一定时间之后才进行的任务设置,这种命令发起的任务都是一次性的。 一般发起延迟任务的命令是at
1、基本用法
at + 具体时间 | 在某个具体时间执行延迟任务 |
---|---|
at now + 时间 | 从现在开始多长时间后执行延迟任务 |
at -l | 查看延迟任务 |
at -c job号 | 查看任务的具体内容 |
at -r job号 | 取消任务 |
2、系统延迟任务的黑白名单
系统中存在的用户是可以执行延迟任务的
建立用户延迟任务黑名单,黑名单为/etc/at.deny,在名单中写入用户wang
结果显示用户wang不能执行延迟任务建立用户的延迟任务白名单,白名单为/etc/at.allow,这个名单默认情况下是不存在的,一旦这个名单存在,系统中只有root用户以及白名单上的用户可以执行延迟任务。当白名单存在时,黑名单默认是失效的。
在白名单中写入用户wang,再次切换用户,结果显示用户wang可以执行延迟任务,用户dan不可以
3、系统延迟任务有输出的情况
当延迟任务有输出时输出会以邮件形式发送到任务发起者的邮箱中
二、定时任务
延迟任务at是一次性的,只执行一次,永久任务是存放在磁盘中的,永远都在。
设定方式1----命令方式
制定定时任务的工具为:crontab
服务的名称为:crontab.service
crontab -e | 编辑 |
---|---|
crontab -u | 指定用户 |
当使用crontab制定定时任务时,时间的格式如下所示
field | allow values |
---|---|
minute | 0-59 |
hour | 0-23 |
day of month | 1-31 |
month | 1-12(or names) |
day of week | 0-7(0 or 7 is Sunday, or use name) |
如下图所示,第一行表示:每分钟清空下/mnt
第二行表示:每隔5分钟清空下/mnt
第三行表示:8点到11点之间每隔五分钟清空下/mnt
第四行表示:每月的1号和15号的8点到11点之间每隔五分钟清空下/mnt
第五行表示:6月到10月的1号和15号的8点到11点之间每隔五分钟清空下/mnt
第六行表示:6月到10月的1号和15号以及6月到10月的每个星期六的8点到11点之间每隔五分钟清空下/mnt
crontab -l -u root | 查看root用户下的所有crontab |
---|---|
crontab -r -u root | 将root用户下的所有crontab全部删除 |
设定方式2----配置文件方式
进入配置文件所在的目录cd /etc/cron.d
,查看目录中存在文件的写入格式,并且在这个目录中写入我们需要的定时任务即可查看目录中文件sysstat的格式
在文件wang中写入定时任务
crontab黑名单设定
在文件/etc/cron.deny中设定黑名单用户wang
crontab白名单设定
和延迟任务白名单类似,定时任务白名单为/etc/cron.allow,在名单中写入用户wang。这个名单默认情况下是不存在的,一旦这个名单存在,系统中只有root用户以及白名单上的用户可以执行延迟任务。当白名单存在时,黑名单默认是失效的。