一.crond任务调度
基本介绍:用于重复在系统的某个时间执行对应的命令或者程序
基本语法:
crontab [选项]常用选项:
| -e | 编辑crontab定时任务 |
| -l | 查询crontab任务 |
| -r | 删除当前用户所有的crontab任务 |
快速入门:
1.执行crontab -e 命令
2.输入*/1 * * * * ls -a
意思是说每个小时的每分钟执行ls -a
细节参数说明:
5个占位符的说明:
| 占位符 | 含义 | 范围 |
| 第一个参数 | 一个小时当中的第几分钟 | 0-59 |
| 第二个参数 | 一天当中的第几个小时 | 0-23 |
| 第三个参数 | 一个月当中的第几天 | 1-31 |
| 第四个参数 | 一年当中的第几月 | 1-12 |
| 第五个参数 | 一周当中的星期几 | 0-7 |
注意:第五个*中0和7都代表星期日
特殊符号说明:
| 特殊符号 | 含义 |
| * | 代表任何时间,比如第一个*代表一个小时中每分钟都执行一次 |
| , | 代表不连续时间,比如"0 8,12,16 * * * 命令"代表每天8点0分,12点0分,16点0分都执行一次命令 |
| - | 代表连续的时间范围,比如"0 5 * * 1-6 命令"代表在周一到周六的凌晨5点0分执行命令 |
| */n | 代表每多久执行一次,比如"*/10 * * * * 命令"代表每隔10分钟执行一次命令 |
其他相关指令:
service crontab restart 用于重启任务调度
二.at任务调度
基本介绍:
1.at命令是一次性定时计划任务,at的守护进程atd会以进后台模式运行,检查作业队列来运行(默认情况下每60s检测一次,如果有作业且与当前时间匹配则运行此作业)
2.使用at命令时候,一定要保证atd进程的启动,可以用ps -ed | grep atd来查看
基本语法:
at [选项] [时间] Ctrl+D结束at命令的输入(要按两次)选项:
| 选项 | 含义 |
| -m | 指定任务完成后会给用户发送邮件,即使没有标准输出 |
| -I(大写i) | atq的别名 |
| -d | atrm的别名 |
| -v | 显示任务将被执行的时间 |
| -c | 打印任务的内容到标准输出 |
| -V | 显示版本信息 |
| -q <队列> | 使用指定的队列 |
| -f <文件> | 从指定文件读入任务而不是从标准输入读入 |
| -t <时间参数> | 以时间参数的形式提交要运行的任务 |
时间指定方法:
1.接受在当天的hh:mm式的时间指定,假如时间已过,那么就在第二天执行
2.使用midnight(深夜),noon(中午),teatime(茶饮时间,一般是下午4点)等模糊词
3.采用12小时制,在时间后加上am或pm,如12pm
4.指定命令执行的具体日期,格式为month day或mm/dd/yy(月/日/年)或dd.mm.yy(日/月/年).指定日期必须跟在指定时间后面.如04:00 2026-07-12
5.使用相对计时法,格式为now+count time-units.now为当前时间,time-units为时间单位(minutes,hours,days,weeks,count).如now + 5minutes
6.直接使用today,tomorrow来指定
举例:两天后的下午五点执行/bin/ls /home
输入at 5pm + 2 days回车,输入/bin/ls /home,输入两次Ctrl+D即可
相关命令:
atq 查询系统中没有执行的工作任务
atrm [数字] 删除job队列中的任务