自动化的定时任务

作者: triplestudio | 来源:发表于2022-02-16 14:23 被阅读0次

1、定时任务的场景

日常工作生活中,经常会有规定时间或按一定周期执行的任务或活动,比如每周一要开会,每月初要出统计报表,每隔一段时间要清除日志等。人难免有疏忽,对于计算机指令可完成的事情,通过计划定时任务可实现自动化执行,省心省力。

2、表达设计

表达一项定时任务,直接的想法当然就是如此:

时间约定 执行命令

时间约定:即定时,用于规定时间。这主要解决每周一,每月1号,每隔5分钟如何表述的问题,一种不错的定义详见表达式结构小节。
执行命令:要执行的任务,在系统中即为命令或脚本。

3、crontab 命令

Linux 系统提供了计划任务的 crontab 命令,相关服务默认是开启的,通过以下命令可以查看服务状态。

# ubuntu下
service cron status 
# 其它或可能  
service crond status

使用 crontab 命令可查看和编辑定时任务。

# 查看已配置的定时任务列表
crontab -l   
# 编辑定时任务
crontab -e 

配置内容,每行表达一项定时任务(#号开头表示注释)。

3.1、表达式结构

结构如下,一行中前面5节用于配置时间约定,之后就是要执行的命令。

几分 几时 几日 几月 周几 命令

如下图所示:


描述
几分 表示分钟,取值范围 0 ~ 59。
几时 表示小时,取值范围 0 ~ 23。
几日 表示日期,取值范围 1 ~ 31。
几月 表示月份,取值范围 1 ~ 12。
周几 表示星期几,取值范围 0 ~ 7,0 和 7 都表示星期日。

除了直接设定为某个值,每节的时间还可按如下形式配置:

符号 描述
* 星号 * 代表所有可能的值,几分为 *,则表示每一分钟。
, 逗号可以指定一个列表范围,如“1,3,5”
- 中杠号可以表示一个范围,如“2-6”表示“2,3,4,5,6”
/ 正斜线指定时间的间隔频率,几分为 */10,表示每十分钟。

3.2、实例

假设我们的任务是定期将时间写入一个日志文件,即命令如下。

echo $(date) >> /home/ubuntu/c.log

3.2.1 每分钟执行一次

* * * * * echo $(date) >> /home/ubuntu/c.log

3.2.2 每天8点到17点的第15和第45分钟执行

15,45 8-17 * * * echo $(date) >> /home/ubuntu/c.log

3.2.3 每周一上午8点30分钟执行

30 8 * * 1 echo $(date) >> /home/ubuntu/c.log

3.2.4 每月1、15日01:00执行

0 1 1,15 * * echo $(date) >> /home/ubuntu/c.log

3.2.5 每一小时执行一次

* */1 * * * echo $(date) >> /home/ubuntu/c.log

3.2.6 晚上11点到早上7点之间每隔一小时执行一次

* 23-7/1 * * * echo $(date) >> /home/ubuntu/c.log

4、秒级表达

由于这里的最小粒度为分钟,秒级表达的一种办法是让一分钟执行多次相同的任务,通过 sleep 延时的方式在1分钟内分片执行。

* * * * * command
* * * * * sleep 20; command
* * * * * sleep 40; command

5、踩坑

5.1 % 坑

当命令本身包含 % 时,需要加 \ 转义。

# 标准命令
echo $(date "+%Y-%m-%d %H:%M:%S")
# 表达式配置
* * * * * echo $(date "+\%Y-\%m-\%d \%H:\%M:\%S") >> /home/ubuntu/c.log

6、后话

拥有一台linux云服务器,则可以轻松的定义多个定时任务。而这个任务是什么呢?其实任务不一定要是同一台服务器上的,任何一个 URL 都可以看成是一项可执行的任务。

例如,一个统计数据通知的页 http://*domain.com/statnotify,其功能是打开即向指定邮箱发送统计数据,则在任一服务器上定义如下定时任务都可达到每天自动执行的目的。

# 每天自动触发统计通知
* * */1 * * curl http://*domain.com/statnotify

相关文章

  • jenkins打包,发布,部署

    1.定时任务在哪里设置 前言 跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时...

  • 自动化 - 定时任务

    定时任务是系统定期执行的任务 1.定时任务解说 在MisShop平台中,定时任务的本质就是一个立即执行页面,到点了...

  • 自动化的定时任务

    1、定时任务的场景 日常工作生活中,经常会有规定时间或按一定周期执行的任务或活动,比如每周一要开会,每月初要出统计...

  • Jenkins(一)Jenkins+Pipeline运行Pyth

    前情介绍:做自动化测试的时候,很多朋友都会纠结于用什么办法来实现脚本的定时触发。除了常规的系统自带的定时任务(比如...

  • 2019-07-31定时任务

    定时任务 定时任务实现方法 系统默认定时任务 用户自定义设置定时任务 定时任务配置文件 定时任务启动 定时任务样例...

  • selenium学习笔记12——Jenkins定时构建

    每次执行自动化测试代码,都需要打开pycharm,手动运行。所以想到使用Jenkins构建,然后设置定时任务,自动...

  • 分布式定时调度-xxl-job

    一、定时任务概述 1.1 定时任务认识 1.1.1 什么是定时任务 定时任务是按照指定时间周期运行任务。使用场景为...

  • Python定时框架 Apscheduler的使用介绍

    介绍 在我们的日常工作自动化测试当中,几乎超过一半的功能都需要利用定时的任务来推动触发,例如在我们项目中有一个定时...

  • day 22 操作系统定时任务

    系统定时任务概念==生活中闹钟 系统定时任务实现方法: 实现定时任务配置: 定时任务如何进行设置 定时任务编写常见...

  • 常用shell命令行命令-定时任务

    crontab可以在用户指定时间按计划运行任务,是开发中自动化的重要工具。相关命令安装或更改crontabcron...

网友评论

    本文标题:自动化的定时任务

    本文链接:https://www.haomeiwen.com/subject/arnnkrtx.html