Skip to content

Linux 任务调度

任务调度

crontab 任务调度

crontab 进行定时任务的设置(反复执行)
任务调度指系统在某个时间执行的特定的命令或程序
分类:系统工作、个别用户工作
crontab [选项]
选项:
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有crontab任务
设置任务调度文件:/etc/crontab
设置个人任务调度:crontab -e
重启任务调度:service crond restart
示例:
*/1 * * * * ls -l /etc/ > /tmp/to.txt
5个占位符的含义:

项目 含义 范围
第一个"*" 一小时的第几分钟 0-59
第二个"*" 一天的第几小时 0-23
第三个"*" 一月中第几天 1-31
第四个"*" 一年中第几月 1-12
第五个"*" 一周中星期几 0-7(0和7都代表星期日)

特殊符号的含义:

特殊符号 含义
* 代表任何时间,例如第一个"*"就代表一小时中每分钟都执行
, 代表不连续的时间,例如"0 8,12,16 * * *"代表在每天的8/12/16点0分执行
- 代表连续的时间范围,比如"0 5 * * 1-6"代表周一到周六凌晨5点0分执行
*/n 代表每隔多久执行一次,比如"*/10 * * * *"代表每隔10分钟执行

at 定时任务

at 命令是一次性定时计划任务,执行完一个任务就不再执行该任务了
在使用 at 命令时,一定要保证 atd 进程的启动

可以通过 ps -ef | grep atd 指令查看 atd 进程是否运行

at [选项] [时间]
Ctrl+D 输入两次结束命令输入
选项:
-m 当指定任务完成后,给用户发送邮件,即使没有标准输出
-I atq 的别名,atq 查询任务队列
-d atrm 的别名,atrm 编号 删除任务
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V 版本信息
-q <队列> 使用指定的队列
-f <文件> 从指定文件读入任务而不是从标准输入
-t <时间参数> 以时间参数的形式提交要运行的任务
指定时间的方法:
1. 接受在当天 hh:mm 式的时间指定,如果时间过去,在第二天执行
2. 使用 midnight noon teatime 等词语指定
3. 采用12小时计时制,即在时间后加上AM或PM来指定上下午,例如 12pm
4. 指定命令执行的具体日期,指定格式为 month daymm/dd/yydd.mm.yy ,指定日期必须跟在指定时间后面,例如 04:00 2021-03-1
5. 使用相对计时法,格式为:now + count time-units ,其中 now 代表当前时间,time-units 是时间单位,可以是 minutes hours days weekscount 是时间的数量,例如 now + 5 minutes
6. 直接使用 today tomorrow