Linux的系统周期化任务
延时任务
实验环境:
at命令详情:
-m | 当任务完成之后,即使没有标准输出,将给用户发送邮件 |
-l | 列出目前系统上面的所有该用户的at调度 |
-d | 可以取消一个在at调度中的工作 |
-v | 使用较明显的时间格式,列出at调度中的任务列表 |
-c | 可以列出指定任务命令内容 |
-f | 从文件中读取作作业 |
示例:
黑白名单
系统默认存在黑名单,在黑名单的用户无法执行at命令
可以在创建/etc/at.allow白名单,创建白名单后黑名单失效,仅允许root用户以及白名单内的用户执行at
定时任务
用户定时任务
用户级别的定时任务使用crontab来发起
crontab命令详解:
-u | 指定用户,一般为root |
-e | 编辑-u指定用户crontab的内容 |
-l | 显示指定用户的crontab文件的内容 |
-r | 删除指定用户的crontab |
-i | 搭配-r使用,删除时询问是否确认删除 |
crontab文件的格式为:分钟 小时 天 月 周 执行任务
时间表示方式:
* | *号表示所有,如* * * * *表示每分钟 |
1,5 | 表示1和5,如1,5 17 * * *表示17:01 和17:05 |
1-5 | 表示1到5,如1 1-5 * * *表示1:01、2:01、3:01、4:01、5:01 |
*/5 | 表示每隔5,如*/5表示,每隔五分钟 |
示例:
crontab格式:
安全优化:
与延时任务相似,可以通过编辑/etc/cron.deny(黑名单)和/etc/cron.allow(白名单)控制可执行定时任务的用户
示例:
系统定时任务
系统级目录详解:
/etc/cron.daily | 每天的任务 |
/etc/cron.hourly | 每小时的任务 |
/etc/cron.monthly | 每月的任务 |
/etc/cron.weekly | 每周的任务 |
示例: