计划任务分为两种at和corn
at仅执行一次的任务
corn循环执行的任务
at计划任务-单次任务
启动atq服务 systemctl start atq
运行方式:
at命令会将任务以文本的形式写入/var/spool/at/目录下,然后此任务会等待atq服务执行。
权限:
系统利用/etc/at.allow与/etc/at.deny这两个文件施加限制
1.若存在allow,存在于at.allow的用户才可以使用at。
2.若allow不存在,不在deny文件的用户才可以使用.
3.若两个文件都不存在,只有root用户可以使用at.
一般只使用deny文件,把需要拒绝的用户写入。一个账号写一行。
语法:
at [-mldvc] TIME
-m发送邮件,-l列出所有计划(atq),-d删除指定计划,-v指定时间格式 -c直接跟任务命令
TIME格式有
指定时间HH:MM (04:00)
指定某天某时刻 HH:MM YYYY-MM-DD(04:00 2021-04-01)
使用加号now + number[minutes|hours|days|weeks] (now + 5 minutes)
输入命令后按ctrl+d结束计划任务的输入。
batch空闲时执行任务当平均负载(一段时间内cpu执行的任务数)小于0.8时执行,其使用方法与at类似无须设置执行时间
CRON计划任务-循环任务
运行方式:
crontab命令是区分用户的,它会将任务以文本的形式写入/var/spool/cron/用户 文件下,然后此任务会等待cron服务执行。cron每一项任务都会写入/var/log/vcron日志文件中
权限:
系统利用/etc/cron.allow/etc/cron.deny这两个文件施加限制,规则与at类似
一般只使用deny文件,把需要拒绝的用户写入。一个账号写一行。
语法:
crontab [-u username] [-l|-e|-r]
-u 只有root用户可以使用,创建指定用户的循环任务
-l查看任务,-e编辑任务 -r删除所有任务
crontab进入编辑vim模式,输入一项任务,如下图所示:
五个日期分别表示是如下:
分钟 小时 日期 月份 周 命令
*表示任何时刻都接受
,逗号表示分时段执行,例如0 3,5 * * * 每天3点 和5点执行
-减号范围
/n每间隔时间 例如 */5 * * * * cmd,每间隔5分钟执行。
配置文件 /etc/crontab、/etc/cron.d/*
命令行是为用户cron设计的,对于例行性的任务只需编辑/etc/crontab文件即可,或者将写好的文件放到/etc/cron.d/目录下,
查看/etc/crontab文件
MAILTO出现错误时发送的邮件账号,其他配置项与命令行一致
crond服务读取配置文件位置
/etc/crontab
/etc/cron.d/*
/var/spool/cron/*
查看/etc/cron.d/*目录
每个整点执行一下/etc/cron.hourly/目录下的文件,该脚本下直接写命令即可,不用配置时间信息,同样有cron.daily .weekly、.monthly
1,11,21,31,41,51 * * * * echo "哈哈" 每到*1执行输出
anacron可唤醒任务计划
语法
anacron [-sfn] [job]
anacron - u [job]
-s连续执行根据时间戳 -f强制执行 ,不判断时间戳 -n立即执行,不延迟
-u只更新时间戳,不执行
[job] /etc/anacrontab任务名称
以cron.daily为例说明:
【1】cron.daily任务,1代表每隔一天执行一次,5代表延迟5分钟
【2】anacron服务,从/var/spool/anacron读出cron.daily任务上次执行时间戳,
【3】判断当前时间与上次时间戳的是否大于1天,大于1天则延时3小时+5分钟,3是由/etc/anacrontab的START_HOURS_RANGE配置
【4】延时过后,执行命令。