在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=someValueenvsubst < 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.mzph.cn/diannao/65506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

教育行业 UI 设计基础篇:简洁直观的风格打造

在当今数字化时代&#xff0c;教育行业的线上平台如雨后春笋般涌现&#xff0c;而 UI 设计作为用户与教育产品交互的重要桥梁&#xff0c;其重要性不言而喻。对于教育行业而言&#xff0c;简洁直观的 UI 风格能够极大地提升用户体验&#xff0c;帮助学习者更高效地获取知识。 …

ChatGPT是如何生成长文的

说实话&#xff0c;现在我们对chatGPT的最深的印象就是他是一个各方面知识都比较全面的机器助手&#xff0c;我们的问题他都能生成答案&#xff0c;不过大家发现没有&#xff0c;它生成相对应的长文的时候&#xff0c;都是一个词一个词蹦出来的&#xff0c;有的时候是一个个词组…

iClient3D for Cesium在Vue中快速实现场景卷帘

作者&#xff1a;gaogy 1、背景 iClient3D for Cesium是由SuperMap提供的一个前端3D地图客户端&#xff0c;提供了丰富的功能与接口&#xff0c;使得开发者能够在Web应用中快速集成并展现3D地理信息。而在Vue框架中集成iClient3D&#xff0c;不仅可以利用Vue的响应式特性提高开…

postgresql ERROR: cannot drop the currently open database

postgresql ERROR: cannot drop the currently open database 解释&#xff1a; 这个错误表明你正在尝试删除或者切换当前正在使用的数据库。在PostgreSQL中&#xff0c;一个数据库对应着一个进程&#xff0c;当一个数据库处于打开状态时&#xff0c;你不能直接删除或者切换它…

KaiOS 4.0 | DataCall and setupData implemention

相关文档 1、KaiOS 3.1 系统介绍 KaiOS 系统框架和应用结构(APP界面逻辑)文章浏览阅读842次,点赞17次,收藏5次。对于Java开发者而言,理解JS的逻辑调用是有点困难的。而KaiOS webapp开发又不同于现代的web开发,更像chrome浏览器内嵌模式。在这里梳理一下kaios平台web应用…

【星海随笔】删除ceph

cephadm shell ceph osd set noout ceph osd set norecover ceph osd set norebalance ceph osd set nobackfill ceph osd set nodown ceph osd set pause参考文献&#xff1a; https://blog.csdn.net/lyf0327/article/details/90294011 systemctl stop ceph-osd.targetyum re…

MySQL敏感数据进行加密的几种方法

使用MySQL内置的加密函数 AES_ENCRYPT和AES_DECRYPT函数 方法介绍&#xff1a; AES&#xff08;Advanced Encryption Standard&#xff09;是一种对称加密算法。在MySQL中&#xff0c;可以使用AES_ENCRYPT函数对数据进行加密&#xff0c;使用AES_DECRYPT函数进行解密。这种加密…

「Mac畅玩鸿蒙与硬件48」UI互动应用篇25 - 简易购物车功能实现

本篇教程将带你实现一个简易购物车功能。通过使用接口定义商品结构&#xff0c;我们将创建一个动态购物车&#xff0c;支持商品的添加、移除以及实时总价计算。 关键词 UI互动应用接口定义购物车功能动态计算商品管理列表操作 一、功能说明 简易购物车功能包含以下交互&#…

json的作用?

JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;具有简洁、易读、易于解析和生成等特点&#xff0c;在前后端数据交互、配置文件、数据存储等多个领域发挥着重要作用&#xff0c;以下是具体介绍&#xff1a; JSON 的作用 数据…

PlantUML 入门使用指南

PlantUML 入门使用指南 一、PlantUML介绍二、PlantUML的用途三、PlantUML的语法及示例3.1 用例图&#xff08;Use Case Diagram&#xff09;3.2 类图&#xff08;Class Diagram&#xff09;3.3 对象图&#xff08;Object Diagram&#xff09;3.4 序列图&#xff08;Sequence Di…

springboot maven 构建 建议使用 --release 21 而不是 -source 21 -target 21,因为它会自动设置系统模块的位置

使用 --release 选项代替 -source 和 -target 是一种更安全、更兼容的方式,特别是在构建使用较新版本 JDK 的项目时。以下是详细解释和建议: 1. 为什么推荐使用 --release 问题点: 使用 -source 和 -target 标志时,仅设置了代码的语言级别和字节码目标版本,但编译器仍可…

快速下载pytorch_geometric

注意&#xff1a;千万不要一上去就使用pip去安装&#xff01;&#xff01;&#xff01; 1.找到GitHub手动下载所需依赖: https://github.com/pyg-team/pytorch_geometric 进入网址后点击此处&#xff1a; 2.点击here进去后寻找自己的torch版本&#xff08;我的是torch2.1.2的…

微服务-1 认识微服务

目录​​​​​​​ 1 认识微服务 1.1 单体架构 1.2 微服务 1.3 SpringCloud 2 服务拆分原则 2.1 什么时候拆 2.2 怎么拆 2.3 服务调用 3. 服务注册与发现 3.1 注册中心原理 3.2 Nacos注册中心 3.3 服务注册 3.3.1 添加依赖 3.3.2 配置Nacos 3.3.3 启动服务实例 …

GNN图神经网络模型详解与代码复现

图结构数据 图结构数据是一种 非线性数据结构 ,由顶点和边组成,能够灵活表达复杂的关系网络。常见的图结构包括: 类型 特点 无向图 边没有方向 有向图 边有明确的方向 加权图 边附加权重信息 层次图 节点间存在层次关系 这种高度灵活的数据组织方式使得图结构特别适合模拟各…

QT-【常用容器类】-QList类 QLinkedList类

QList 和 QLinkedList 是 Qt 框架中提供的两个重要容器类&#xff0c;用于存储和管理一组数据。它们各自具有不同的特点和优缺点&#xff0c;适用于不同的场景。 1. QList 类概述 QList 是一个动态数组类&#xff0c;提供了对元素的快速随机访问。它的实现类似于 C 标准库中的…

SQLAlchemy示例(连接数据库插入表数据)

背景需求 连接数据库&#xff0c;插入表中一些数据。 其用户是新建用户&#xff0c;所以只能插入&#xff0c;不能更新。 再次输入数据则使用更新数据语法&#xff0c;这个没调试。 #! /usr/bin/env python # -*- coding: utf-8 -*-from sqlalchemy import create_engine, …

低代码开发中 DDD 领域驱动的页面权限控制

在低代码开发的领域中&#xff0c;应用安全与灵活性是两大关键考量因素。领域驱动设计&#xff08;DDD&#xff09;作为一种在软件设计领域广泛应用且颇具影响力的方法论&#xff0c;正逐渐在低代码开发的页面权限控制方面展现出其独特的价值与潜力。本文旨在客观地探讨如何借助…

找到一个linux静态库动态库的好资料.3

# 正文 继续整理从这个页面学到的东西&#xff1a;https://tldp.org/HOWTO/Program-Library-HOWTO。 之前的在这里&#xff1a;找到一个linux静态库动态库的好资料.0找到一个linux静态库动态库的好资料.1找到一个linux静态库动态库的好资料.2 这一篇继续看这个: https://tldp…

智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之6

本文提要 一些补充 在为前端和后端 锁定的两个中心词“概念”&#xff08;命题“作文”的 程序 公共逻辑语言 &#xff09;和“描述”&#xff08;谓词“描述” 的 自然 描述语言&#xff09;的基础上 &#xff0c;暂时将中端的中心词 锁定在“环境” &#xff08;情境 “意义…

uniapp小程序实现弹幕不重叠

uniapp小程序实现弹幕不重叠 1、在父组件中引入弹幕组件 <template><!-- 弹幕 --><barrage ref"barrage" class"barrage-content" reloadDanmu"reloadDanmu"></barrage> </template> <script>import barr…