分类
一次性计划任务:在某个时间执行一次任务
周期性计划任务:在一个周期范围内反复执行任务
at 一次性计划任务
格式
at 时间格式
时间格式
未来的一个时间(最多精确到小时,分钟,无法精确到秒数) 14:25
具体的一个时间(年月日,小时,分钟) 17:00 2024-1-28
宽泛的时间:
teatime tomorrow
5PM + 10days
8 AM/PM
创建at一次性计划任务
交互式创建:
at 时间格式 Ctrl+d保存并退出
非交互式创建:
at 时间格式 < 文件
echo ‘命令‘ | at 时间格式
at原理:
at只是一个管理计划任务服务(atd)的工具;at的作用是编写计划任务,每编写一个at任务,都会在/var/spool/at目录下创建一个脚本文件,然后交给atd执行
当你定义了一个计划任务在下午的15点,结果你的机器在14点的59分的时候关机了
at管理方式
列出at一次性计划任务:atq / at -l
eg:2 Sun Jan 28 17:00:00 2024 a root
2:任务编号
Sun Jan 28 17:00:00 2024 任务执行的时间
a 队列优先级 (优先级从高到低,a-z a最大)
root 执行者
删除计划任务:
atrm 任务编号 / at -d 任务编号
指定at队列优先级:
at -q
at的过期任务不会执行,会在下一次重启atd服务或者重启机器的时候执行
dd if=/dev/zero of=/dev/null
dd 模拟输入输出
if 输入设备
of 输出设备
at的黑白名单
/etc/at.deny:禁止指定用户使用at
/etc/at.allow:(默认没有创建)只有在此文件中的用户以及root用户才能使用at计划任务,其他所有用户无法使用
黑白名单冲突时,白名单的优先级更高
crontab周期性计划任务
crontab是管理工具,服务是crond
crontab的格式:
时间 用户 任务(命令、程序..)
时间格式:分 时 日 月 周
用户可以省略
任务:命令、脚本、程序等等
eg:在2月1日,上午的8点执行命令 echo rhel
在2月31日星期2,上午8点执行命令 echo rhel
时间严格要求,如果2月31日不是星期2,计划任务就不会执行
时间范围:
分钟:1-59
小时:1-23
日期:1-31
月份:1-12
星期:1-7 或者 0-6
时间的表达方式:
*/x 每x个时间点执行任务
x,y 表示在x时间点和y时间点执行任务
x-y 表示x时间到y时间执行任务
crontab案例:
1.在凌晨的2点,对/tmp目录进行备份,备份后的命名格式为xxxxxxxx-时间日期(例如 tmp-2024-1-24)
2.在每周一的上午8点到下午的18点,每隔30分钟执行一次脚本disk.sh
3.以memeda用户的身份在每周五的下午8点12分和下午的8点15分执行命令echo hello
4.在每天的晚上11点和12点之间,每隔15分钟清空一次/tmp目录
crontab计划任务的保存路径:/var/spool/cron
每创建一个crontab计划任务,则会在此目录下创建一个以用户名作文文件名的文件
crontab管理方式:
列出当用用户的计划任务 crontab -l
编辑计划任务crontab -e
删除计划任务crontab -r
管理其他用户的计划任务 crontab -u
crontab黑白名单
/etc/cron.deny
/etc/cron.allow
定义crontab计划文件的文件:
crontab -e 编辑,生成的文件在
/var/spool/cron
/etc/crontab
/etc/cron.d系统的计划任务目录
/etc/cron.hourly 每小时执行的计划任务
/etc/cron.daily每天执行的计划任务
/etc/cron.monthly每月执行的计划任务
/etc/cron.weekly每周执行的计划任务
crontab 的日志:/var/log/cron
crontab计划任务不会输入到屏幕,输出的结果会保存在文件中,通过文件查看结果