ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux-->定时任务调度

2022-09-07 20:00:38  阅读:299  来源: 互联网

标签:任务调度 命令 -- 指定 队列 任务 时间 Linux 执行


crond 任务调度

概述

指定系统在某个时间执行特点的命令或程序。

任务调度分类:

  1. 系统工作:有些重要的工作需要周而复始的重复执行,如病毒扫描等。
  2. 个别用户工作:个别用户可能希望执行某些程序,如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定时任务

基本介绍

  1. at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
  2. 默认情况下,atd守护进程每60s检查作业队列,有作业时会检查作业运行时间,如果时间与当前时间匹配就运行。
  3. at命令是一次性定时计划任务,执行完一次任务后不再执行
  4. 在使用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时间定义

  1. 接受在当天的 hh:mm (小时:分钟) 式的时间指定。假如改时间过去了就放到第二天执行。比如04:00

  2. 使用 midnight (深夜),noon (中午),teatime (下午茶时间,一般为下午4点)等比较模糊的词来指定时间

  3. 采用12小时计时制,即在时间后面加上am(上午),或pm(下午),比如 12:pm

  4. 指定命令执行的具体时间,指定格式为 month day (月 日) 或者 mm/dd/yy(月/日/年)或者dd.mm.yy(日.月.年)

    日期必须跟在时间后面,如 04:00 2021-03-1

  5. 使用相对计时法,指定格式为 now+count time-untis

    • now就是当前时间,time-untis是时间单位,这里可以为
    • minutes(分钟)
    • hours(小时)
    • days(天)
    • weeks(星期)
    • count(是时间数量)如几天,几小时等 如 now+ 5 minutes,五分钟后。
  6. 直接使用 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,执行
来源: https://www.cnblogs.com/wdadwa/p/Linux_Learning_06.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有