Linux-->定时任务调度

2022/9/8 5:23:01

本文主要是介绍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-->定时任务调度的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程