1.atd服务启动
[root@192 ~]# systemctl restart atd #启动atd服务
[root@192 ~]# systemctl enable atd #开机自启动atd服务
[root@192 ~]# systemctl status atd #查询atd服务状态
需要看到绿色的enable 和 running才算正式启动
2.单一计划任务 at命令
at 【-mldv】 TIME
at -c 任务号码
-m:当任务完成时即使不输出也会发邮件提醒
-l:相当去atq,列出所有at计划
-d:相对于atrm,取消一个at计划任务
-v:用明显时间格式列出at计划
-c:列出实际命令内容
TIME:什么时候执行at命令
HH:MM 在今天的HHMM执行,如超过则明天的HHMM执行
HH:MM YYYY-MM-DD 固定的时间日期
HH:MM【am|pm】 【month】 【Date】 同上
HH:MM【am|pm】+number[minutes|hours|days|weeks]
在某时间点的后 number个时间执行 现在为now,单位后的s不要忘记。
例子:5分钟后将打出一段字符
[root@192 ~]# at now + 1 minutes
at> echo 1 minute pass
at> <EOT>
job 1 at Sun Jun 19 04:16:00 2022
在新的一行,ctrl+d结束命令输入,at可以同时可以输入多道命令。使用绝对路径来输入命令。
命令执行与终端无关,所有标准输出都会发送道mailbox,可以通过终端设备来解决这个问题,如
echo hello > /dev/zxb
使用at命令可以转为后台命令,不会被死机等问题中断
atq:查询at命令与编号
atrm x:删除x号at命令
batch:系统有空时执行后台命令,用法与at相同。
2.循环的计划任务 crontab
配置文件
/etc/cron.allow/ 只有在此文件中的用户才能使用crontab
/etc/cron.deny/ 在此文件中的用户不能使用crontab
allow文件优先高于deny,保留一个即可
crontab 【-u username】 [-l|-e|-r]
-u:只有root能执行这个任务,帮其他使用者建立/删除crontab命令
-e:编辑crontab命令,也可以删除一个crontab命令
-l:查看crontab命令
-r:删除所有crontab命令
例子:每天在12:00发信给自己
[root@192 ~]# crontab -e
#输入之后会进入一个如vim的文档
0 12 * * * mail -s testword root </home/root/.bashrc
#前五个数字为 分 时 日 月 周 后为命令串
时间有一些特殊字符
*代表任意时间
,时间分割,如3,6为第3和第6个时间点,这两个时间点都可以执行
-时间区间
/n 每个n个时间节点执行一次
3.执行未执行但到了或过了计划时间的任务 anacron
配置文件 /etc/anacrontab
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
# 最大延迟时间,单位为分钟
START_HOURS_RANGE=3-22
#延迟多少小时内应执行任务时间
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#
#天数 延迟时间 工作名称定义 实际要执行的命令串
#延迟时间单位为分钟
天数:acacron与执行当前时间戳相差的天数,超过此天数准备执行任务
延迟时间:如要执行延迟任务,会有一个延迟时间以防止资源冲突
工作名称定义:名称
acacron 命令
acacron 【-sfn】 【job】
acacron 【-u】 【job】
-s:开始连续执行各项任务
-f:强制执行
-n:立刻执行未执行的任务
-u:仅更新时间戳而不执行任务