Linux-->定时任务调度
2022/9/8 5:23:01
本文主要是介绍Linux-->定时任务调度,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
crond 任务调度
概述
指定系统在某个时间执行特点的命令或程序。
任务调度分类:
- 系统工作:有些重要的工作需要周而复始的重复执行,如病毒扫描等。
- 个别用户工作:个别用户可能希望执行某些程序,如mysql数据库的备份。
语法
crontab 选项
常用选项
选项 | 说明 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户的所有crontab任务 |
用法举例
*/1**** ls -l /etc/ > tmp/to.txt ->将etc目录的列表信息传入to.txt中
将其写入到crond任务调度中即可每一分钟执行依次
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点执行 |
*/n | 代表每个多久执行依次,比如"*/10 * * * *"代表每隔10分钟执行 |
特殊时间执行任务案例
时间 | 含义 |
---|---|
45 22 * * * | 每天的22点45分执行命令 |
0 17 * * 1 | 每周一17点0分执行命令 |
0 5 1,15 * * | 每月1到15号的5点0分执行命令 |
40 4 * * 1-5 | 每周1到中午的4点40分执行命令 |
*/10 4 * * * | 每天4点每隔10分钟执行一次命令 |
0 0 1,15 * 1 | 每个月的1号到15号,每周1的0点0分执行命令 |
星期几和几号最好不要同时出现!容易混乱。
脚本一般是 xxx.sh 文件
一般的我们把要执行的指令写到 xxx.sh 脚本文件中,在crontab中定时执行即可
注意记得给执行权限!
重启任务调度
service crond restart
at定时任务
基本介绍
- at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
- 默认情况下,atd守护进程每60s检查作业队列,有作业时会检查作业运行时间,如果时间与当前时间匹配就运行。
- at命令是一次性定时计划任务,执行完一次任务后不再执行
- 在使用at命令的时候,务必保障atd进程的启动!
atd会60s一次对一个任务队列进行检测,如果条件符合就出队执行,否则就检测下一个
检测当前运行的进程
ps -ef
检查atd进程是否启动
ps -ef | grep atd
at命令语法
at 选项 时间
ctrl + D 结束at命令的输入
常用选项
选项 | 含义 |
---|---|
-m | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 |
-M | 不发送邮件 |
-I | atq的别名 |
-d | atrm的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q<队列> | 使用指定队列 |
-f<文件> | 从指定文件读入任务而不是从标准输入中读入 |
-t<时间参数> | 以时间参数的形式提交要运行的任务 |
at时间定义
-
接受在当天的 hh:mm (小时:分钟) 式的时间指定。假如改时间过去了就放到第二天执行。比如04:00
-
使用 midnight (深夜),noon (中午),teatime (下午茶时间,一般为下午4点)等比较模糊的词来指定时间
-
采用12小时计时制,即在时间后面加上am(上午),或pm(下午),比如 12:pm
-
指定命令执行的具体时间,指定格式为 month day (月 日) 或者 mm/dd/yy(月/日/年)或者dd.mm.yy(日.月.年)
日期必须跟在时间后面,如 04:00 2021-03-1
-
使用相对计时法,指定格式为 now+count time-untis
- now就是当前时间,time-untis是时间单位,这里可以为
- minutes(分钟)
- hours(小时)
- days(天)
- weeks(星期)
- count(是时间数量)如几天,几小时等 如 now+ 5 minutes,五分钟后。
-
直接使用 today(今天),tomorrow(明天)来指定完成命令时间。
查看系统中未执行的任务
atq
删除已经设置的任务
atrm 任务编号
对于at -q命令
-q选项后面跟上队列名称将使用指定的队列执行at任务
at -q队列等级 时间
-
队列名称只包含一个字母,有效的队列名称取值范围是:小写字母a-z或大写字母A-Z
-
在默认情况下a队列作为at命令的默认队列,b队列作为batch命令的默认队列
-
越大的字母在执行时拥有越高的优先级
-
如果在创建at计划任务是使用大写字母指定任务的队列,该任务在执行的时候将被当做batch计划任务处理
batch:在系统负荷允许的情况下执行at任务,换言之,就是在系统空闲的情况下才执行at任务**
对于at -f命令
-f选项后面加上文件路径即可
at -f文件路径 时间
这篇关于Linux-->定时任务调度的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南