延迟任务的发起
在系统中我们可以使用
at
命令来发起延迟任务
at
命令执行是调用的是
atd
服务,即使系统最小化安装
atd
也会被安装到系统中
at
任务信息存放在系统中
/var/spool/at
目录中
at
任务的日志文件被存放到
/var/log/cron
中
at
任务执行时如果遇到系统处于关闭状态,那么在开启时
atd
任务会检测未执行的任务并且立即执行
延迟任务发起方法如下:
at 11:30
touch /mnt/file{1..5}
at
命令参数详解
at
命令执行格式为
at [
参数
] [
时间
]
at
命令常用参数
-m
当任务完成之后,即使没有标准输出,将给用户发送邮件
-l atq
的别名,可列出目前系统上面的所有该用户的
at
调度
-d atrm
的别名
,
可以取消一个在
at
调度中的工作
-v
使用较明显的时间格式,列出
at
调度中的任务列表
-c
可以列出后面接的该项工作的实际命令内容
-f
从文件中读取作作业
at
命令的时间表示方法
HH:MM
在今天的
HH
小时
MM
分钟执行,如果今天的这个时间点已经过了,则明天执行
HH:MM YYYY-MM-DD
强制规定在某年某月的某一天的特殊时刻进行该工作
now + 2 minutes
从现在开始几分钟
minutes, hours, days, or weeks
如何非交互的设定延迟任务
在生产环境中我们通常会用脚本来设定一个或多个延迟任务但是
at
任务的执行需要交互的进行,这样无法
满足脚本自动化运行,输入重定向可以解决交互问题:
vim at_job.sh
at now+1min
rm -fr /mnt/file{1..5}
定时任务发起
在系统中我们可以使用
crontab
命令来发起用户级定时任务
在系统中
/etc/cronfilename
是系统级定时任务,只有
root
用户可以发起
定时任务执行是调用的是
crond
服务,即使系统最小化安装
crond
也会被安装到系统中
定时任务信息存放在系统中
/var/spool/cron
目录中,存放文件和发起人名称一致
定时任务的日志文件被存放到
/var/log/cron
中
定时任务执行时如果遇到系统处于关闭状态,那么在开启时
crond
任务会检测未执行的任务并且立
即执行
发起用户级周期行任务
周期任务发起方式
crontab
命令的执行格式为:
crontab –u
用户
–e
crontab
命令参数如下
-u
:用来设定某个用户的
crontab
服务此参数一般有
root
用户来运行。
file
:
file
是命令文件的名字
,
表示将
file
做为
crontab
的任务列表文件并载入
crontab
-e
:编辑某个用户的
crontab
文件内容。如果不指定用户,则表示编辑当前用户的
crontab
文件。
-l
:显示某个用户的
crontab
文件内容,如果不指定用户,则表示显示当前用户的
crontab
文件内容。
-r
:从
/var/spool/cron
目录中删除某个用户的
crontab
文件
-i
:在删除用户的
crontab
文件时给确认提示。
crontab
在设定定时任务是会以
vi
命令打开临时文件在保存时会把内容同步到
/var/spool/cron
中
文件格式为:分 时 天 月 周 执行动作
11 11 * * * echo hello #
每天
11
点
11
分执行
echo hello
命令
发起系统级别的周期任务
/etc/cron.d
系统自定义周期任务
/etc/cron.daily
每天周期任务
/etc/cron.hourly
每小时周期任务
/etc/cron.monthly
每月周期任务
/etc/cron.weekly
每周周期任务
自定义周期任务设置方式
vim /etc/cron.d/job
分钟 小时 天 月 周 用户 动作
01 09-17 * * * root date
定时任务执行优化
定时任务在执行时首先会查看执行者是否在名单中
系统中默认只存在黑名单
/etc/cron.deny
,写入此文件中的用户会被禁止使用定时任务
在系统中可以手动建立白名单
/etc/cron.allow,
当此文件出现黑名单不会被检测
白名单出现只有
root
用户和白名单用户可以执行定时任务
如果系统中没有黑白名单那么只有
root
用户可以执行任务
黑白名单为用户列表,每个用户一行
黑白名单只针对用户级定时任务进行限制