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 day 或 mm/dd/yy 或 dd.mm.yy ,指定日期必须跟在指定时间后面,例如 04:00 2021-03-1
5. 使用相对计时法,格式为:now + count time-units ,其中 now 代表当前时间,time-units 是时间单位,可以是 minutes hours days weeks ,count 是时间的数量,例如 now + 5 minutes
6. 直接使用 today tomorrow