at
所属服务atd
at所执行的任务写入/var/spool/at文本中
使用者账户限制,/etc/at.allow文件中的账户可以使用at,不存在的账户不能使用;/etc/at.deny中的账户不能使用at,不存在的账户可以使用;如果两个文件都不存在,只有root可以使用at
at [-mldv] TIME
at -c 任务号码
-m:at任务完成后以email通知使用者
-l:相当于 atq,列出系统上所有的at任务
-d:相当于 atrm,取消一个at任务
-v:写出任务的工作列表
-c:列出at任务的实际命令内容
TIME:时间格式,定义任务执行的时间
HH:MM 离当前之间的最近的这个时间执行(当前时间未超过该时间点则当日执行,超过该时间则次日时间点执行)
HH:MM YYYY-MM-DD 在确定的某个时间点执行
HH:MM[am|pm] [Month] [Date] 在确定的某个时间点执行
HH:MM[am|pm] + number [minutes|hours|days|weeks] 在某个时间点之后的一段时间执行
atq 列出所有at任务
atrm 任务号码 删除某个任务
batch
系统有空才执行的背景任务。CPU工作负载小于0.8才执行任务。工作负载:CPU在单位时间执行的工作数量
crontab
使用者账户限制,/etc/cron.allow文件中的账户可以使用at,不存在的账户不能使用;/etc/cron.deny中的账户不能使用at,不存在的账户可以使用;
crontab [-u 账户] [-l|-e|-r]
-u:仅root账户使用,管理其他账户的crontab任务
-l:查看当前账户crontab任务
-e:编辑crontab任务
-r:删除所有crontab任务
工作任务格式:
字段意义 分钟 小时 日期 月份 周 指令
范围 0-59 0-23 1-31 1-12 0-7 执行命令
周字段里,0和7都代表周日,周和日月不可同时并存
特殊字符 意义
* 代表所有可能值
, 分段
- 范围
/n n为数字,代表每间隔n单位间隔
相关配置文件/etc/crontab,/etc/corn.d/*
crontab -e是使用者的编辑命令,要修改系统任务,则编辑/etc/crontab文件
字段和crontab -e有所不用,有七个字段"分 时 日 月 周 用户 命令",其中用户为执行命令的账户
cron服务的配置文件有/etc/crontab、/etc/cron.d/*、/var/spool/cron/*,其中/var/spool/cron/*跟用户配置相关,其余跟系统任务配置相关
/etc/cron.hourly/里面的可执行文件每小时被crond执行一次,/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly被anacron执行anacron执行方式则是放在/etc/cron.hourly/0anacron里面,跟前几代anacron是单独的service不一样。
anacron
可唤醒停机期间的工作任务
anacron处理非24小时启动的linux系统的crontab执行,以及某些原因导致的超过时间而没有执行的调度任务。
anacron每个小时被crond执行一次,然后anacron再去检测相关任务有没有执行,如果有超过期限的任务存在,则执行相关任务,执行完后则停止。通过检测上次执行时间戳来发现是否超时未执行。
anacron是一支程序并非服务
anacron [-sfn] [job]
anacron -u [job]
-s:开始已连续的执行各项工作,会根据时间戳判断是否要执行
-f:强制执行,不检测时间戳
-n:立刻执行,不延迟
-u:仅更新时间戳,不执行工作
job:由/etc/anacron定义的各项工作名称
/etc/anacrontab分析
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45 #随机给与的最大时间,单位分钟
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22 #延迟多少小时内应该执行的任务时间
#period in days delay in minutes job-identifier command
#时间周期(单位天) 延迟时间(单位分钟) 工作名称定义 执行命令
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly