当前位置: 首页 > article >正文

在Linux的世界中怎么玩转定时器任务

定时器使用

先是看到一段使用Linux Sevice服务的脚本,意外发现在ExecStart启动脚本中,它利用无限循环做定时任务的事情,非常突兀!

觉得既然用得了Linux Service,那么,与之配套的cron定时器服务是否更应该用起来,显得更专业呢?


另外,看到有人使用watch -n 10 "pkill procName"来实现定时器测试输入动作。

本来用作持续观察命令输出的命令,竟然也可以另做它图,作为定时器来使用,也是非常有趣的!

那么,在Linux的世界中,应该如何来使用定时任务呢?尝试记录下 😃

定时任务使用方法总结

方式说明
cron服务簇通过系统定时服务进行定时器任务的使用
watch通过-n 参数指定时间,以及提供另类的持续观察命令,达到定时执行效果。对于简单测试场景,确实非常实用
无限循环脚本通过sleep,或者比较系统时间进行模拟。类似使用独立线程来模拟定时器,好处是不容易受到其它因素干扰,但坏处也是明显的

使用cron定时系统服务

建议将定时任务配置文件放入/etc/cron.d,和/etc/cron.{daily,weekly,monthly}目录下。

  • 配置方法,参考系统对应目录下已有部署定时任务

envsubst对模版文件进行脚本变量替换

在配置文件生成时,可以结合envsubst命令,将定时任务配置模版文件进行变量替换

  export SomeEnv=someValue
  envsubst < config.template > config

cron与anacron的勾连

在原有设计上,anacron用来实现更长周期的定时器任务,例如,{daily,weekly,monthly}级别的定时器任务。

但,现在Linux发行版一般都会将二者合二为一,通过run-parts相互调用勾连起来

  • 直接在/etc/crontab配置文件中
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
  • 勾连在/etc/cron.d/0hourly和/etc/cron.hourly/0anacron配置文件中
# /etc/cron.d/0hourly
# run-parts
01 * * * * root run-parts /etc/cron.hourly

# /etc/cron.hourly/0anacron
/usr/sbin/anacron -s
  • 注: 某些Linux发行版存在/etc/anacrontab配置的文件Linux发行版,可以在配置文件中,通过START_HOURS_RANGE参数,指定长周期任务在一天内什么时间段执行

附录

# 一行无限循环的定时脚本
while true; do sleep 1; echo "Hello World!"; done

参考

  • cron
  • anacron
  • envsubst

http://www.kler.cn/a/456650.html

相关文章:

  • 【信息系统项目管理师】高分论文:论信息系统项目的沟通管理(银行绩效考核系统)
  • android app构建时排除指定类
  • 集成方案 | Docusign + 蓝凌 EKP,打造一站式合同管理平台,实现无缝协作!
  • Slate文档编辑器-Decorator装饰器渲染调度
  • C++ 设计模式:观察者模式(Observer Pattern)
  • python读写文件的三种做法
  • WebSocket 在实时比分推送中的应用
  • JVM调优实践篇
  • 虚幻5 UE5 UNREALED_API d虚幻的
  • gesp(二级)(17)洛谷:B4064:[GESP202412 二级] 寻找数字
  • Linux快速入门-一道简单的Makefile编程题目
  • windows C#-显式实现接口成员
  • Datawhale AI冬令营 动手学AI Agent
  • iOS 苹果开发者账号: 查看和添加设备UUID 及设备数量
  • 服务器广播算法
  • SQL 实战:动态表创建与多表更新的高级 SQL
  • windows上设置svn忽略
  • Pandas03
  • Scrum框架下的前端任务分配
  • 【ETCD】【实操篇(十九)】ETCD基准测试实战
  • 【MySQL — 数据库基础】深入解析MySQL数据库操作:创建、使用、删除及字符集管理
  • jwt在express中token的加密解密实现方法
  • FastAPI vs Flask 专业对比与选择
  • 嵌入式单片机中IIC通信控制与实现
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(for循环语句)(三)
  • 欧科云链OKLink:比特币与以太坊“双重启动”将如何撬动市场?