linux延迟任务和定时任务管理
一、延迟任务
延迟任务是临时的,不重复的
当邮件任务有输出,输出会以邮件的形式发送给任务发起人
1、延迟任务发起
ctrl+d 任务发起
[[email protected] ~]# at 01:33
at> rm -fr /mnt/*
at> <EOT> 在1点33删除/mnt/下的所有文件
at -l 查看任务列表
at -c 任务编号 查看延迟任务详情
atrm 任务编号 取消某个延迟任务
延迟任务黑白名单
/etc/at.deny 延迟任务黑名单,用户加入这个文件后,将不能执行延迟任务
例如将westos用户加入黑名单后,切换到westos用户,不能执行延迟任务,切换到其他用户student用户依旧可以执行
/etc/at.allow 延迟任务白名单。系统默认不存在,如果需要,需要手动添加白名单,添加成功后所有普通用户都不可执行延迟任务(白名单内用户和超级用户除外)
将westos用户加入到白名单后,除了westos用户,其他用户都不能执行延迟任务操作
注意!!黑白名单对root用户无效
二、定时任务
定时任务是永久的,定时任务所需要的服务为crond.service(执行定时任务需要开启该服务)
定时任务程序crond,在系统中每分钟作扫描。
1、延迟任务编辑规则
分 时 天 月 周 ##*表示全部
* * * * * ##每隔1分钟执行1次
*/2 * * * * ##每隔2分钟执行1次
* */2 * * * ##每隔2小时执行1次
* * 1,4 * * ##每月1、4号每隔1分钟执行1次
* * * 1-4 * ##1、4月每隔1分钟执行1次
* * * * 4 ##每周4每隔1分钟执行1次
2、发起方式一:用户级别的定时任务发起
crontab -u username -e 发起用户的任务
crontab -u username -l 查看这个用户的所有定时任务
crontab -u username -r 删除这个用户的所有定时任务
如果不加用户参数,则表示root用户的任务执行
任务文件保存位置
/var/spool/cron/root 查看root用户定时任务保存位置(后面表示用户名,如果是student表示student用户的定时任务)
也可以直接在此文件中编辑,
延迟任务黑名单为/etc/cron.deny
延迟任务白名单为/etc/cron/allow(系统默认不存在,如果存在,所有用户均在黑名单)
黑白名单对超级用户无效,使用规则和延迟任务规则一样
发起方式二:系统级别的定时任务发起
/etc/下的这几个目录是跟系统级别有关的定时任务文件
cron.d/ 超级用户设定的自定义定时任务目录 里面是所有自定义任务
自定义任务文件格式* * * * * username 命令 系统级别的自定义任务设定需要指定用户
cron.daily/ 每天执行的定时任务目录
cron.hourly/ 每小时执行的定时任务目录
cron.monthly/ 每月执行的定时任务目录
cron.weekly/ 每周执行的定时任务目录
可以直接在/etc/cron.d/目录下新建文件,生成系统级别的定时任务,任务编写规则为:
延迟任务黑名单为/etc/cron.deny
延迟任务白名单为/etc/cron/allow(系统默认不存在,如果存在,所有用户均在黑名单)
黑白名单对超级用户无效,使用规则和延迟任务规则一样
FBI警告:系统级别设定的定时任务 在crontab -u suername -l 命令查询查询不到
3、非交互式系统级别定时任务设定
*****非交互式定时任务设定****
echo "* * * * * student date">>/etc/cron.d/hello 在cron.d/下生成一个叫hello的自定义定时任务
4、系统临时文件的定时清理
######系统临时文件的定时清理####
定时清理系统文件所需要的服务为system-tmpfiles找到该服务文件所在目录/usr/lib/tmpfiles.d 在该目录下建立一个自动清理的文件westos.conf
编辑内容为
d /mnt/tmp/ 1777 root root 10s 对/mnt/tmp/下的超过10s的文件执行操作
systemd-tmpfiles --create /usr/lib/tmpfiles.d/* 建立刚才编辑的文件
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* 删除/mnt/tmp下超过10s的文件