at
作用:在指定时刻执行一次任务
#安装
yum install atd -y
systemctl restart atd
systemctl enable atd
#选项参数
at [-mlcdv] TIME
-m:任务完成后,邮件通知
-l:当前有多少任务未开始
-d:at -d 任务号,删除指定任务
-v:以明显的时间格式展示任务
-c:展示任务命令的实际内容
TIME
HH:MM 当天指定时刻执行,若已经过去,则明天指定时刻执行
HH:MM YYYY-MM-DD 指定年月日时分执行命令
HH:MM[am|pm] + number [minutes|hours|days|weeks] xx时刻的yy时间之后执行,可以使用now代替HH:MM,如,now + 1 minutes表示一分钟后
#例如
[root@localhost ~]# at now + 1 minutes
at> echo 1
at> <EOT>
job 12 at Sun Jan 9 11:15:00 2022
其中,<EOT>是ctrl + d
batch
作用:系统空闲了的时候再执行命令,空闲的含义是CPU的任务负载小于0.8,任务负载通过uptme命令查看。
batch就是用at实现的
batch
命令
ctrl + d
#例如
[root@localhost /]# batch
at> echo hello > /test.txt
at> <EOT>
crontab
作用:
- 客户自定义定时任务
- 每分/小时/日/月/周定时执行任务
- 每个用户有自己的crontab任务
#选项参数
crontab [-u username] [-l|-e|-r]
-u 被指定操作的用户,如crontab -u xx -l,查看用户xx的定时任务
-l 查看crontab任务列表
-e 编辑crontab任务
-r 删除用户下的所有定时任务
#格式规范
0 12 * * * * command
分 时 日 月 周 命令
#特殊字符
* 任何时刻都接受
, 分隔时间段,如0,30 12 * * * * command,表示每天的12:00和12:30都执行command
- 表示时间范围,如0-30 12 * * * command, 表示每天的12:00 - 12:30
/n 每隔n时间执行一次,如*/5 * * * * command,表示每隔5分钟执行一次
#相关文件
/etc/cron.allow 使用crontab的用户白名单,优先级高于cron.deny
/etc/cron.deny 使用crontab的用户黑名单
/var/spool/cron/username 记录指定用户的定时任务
/var/log/cron 所有用户的定时任务执行日志
系统定时任务
作用:cron服务自动去读取系统定时任务配置文件,适用一些全局生效的任务
crond服务读取的配置文件包括:
/var/spool/cron/用户名 客户自定义的定时任务
/etc/crontab 系统定时任务
/etc/cron.d/* 软件如果有定时任务需求,可以把配置文件放在这个下面,默认有/etc/cron.d/0hourly
/etc/cron.hourly/* 下面的脚本会定时因/etc/cron.d/0hourly定时任务被执行
/etc/cron.hourly/0anacron 定时执行anacron程序,作用是,如果每日/周/月任务因系统关机错过了执行,anacron能识别出来,并在开机一小时左右后执行一次。anacron识别的定时任务包括:
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly