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

在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

相关文章:

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

定时器使用 先是看到一段使用Linux Sevice服务的脚本&#xff0c;意外发现在ExecStart启动脚本中&#xff0c;它利用无限循环做定时任务的事情&#xff0c;非常突兀&#xff01; 觉得既然用得了Linux Service&#xff0c;那么&#xff0c;与之配套的cron定时器服务是否更应该…...

HTML——20 自定义属性

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>自定义属性</title></head><body><a href"https://ai.m.taobao.com" 自定义属性"属性值">淘宝网</a><a href"h…...

2025:OpenAI的“七十二变”?

朋友们&#xff0c;准备好迎接AI的狂欢了吗&#xff1f;&#x1f680; 是不是跟我一样&#xff0c;每天醒来的第一件事就是看看AI领域又有什么新动向&#xff1f; 尤其是那个名字如雷贯耳的 OpenAI&#xff0c;简直就是AI界的弄潮儿&#xff0c;一举一动都牵动着我们这些“AI发…...

mac docker部署jar包流程

mac docker部署jar包流程 默认服务器已经准备好了相关的准备工作&#xff0c;如&#xff1a;docker&#xff0c;docker内安装所需软件数据库&#xff0c;jdk等&#xff0c;将要部署等jar包。 1:将jar 包上传到服务器目录下&#xff1a;/usr/local/service (没有目录可以自己创建…...

【postgresql 物化视图】自动刷新物化视图2种方法

普通视图就是一个虚拟表&#xff0c;不占内存。而物化视图是存在的&#xff0c;占内存。 物化视图&#xff0c;默认是手动刷新。下面是手动刷新的例子。我们来创建一个物化视图。 create MATERIALIZED VIEW dnh_analasis_view as select cjsj,a,b,c,d from table_1; REFRESH …...

HMSC联合物种分布模型

联合物种分布模型&#xff08;Joint Species Distribution Modelling&#xff0c;JSDM&#xff09;在生态学领域&#xff0c;特别是群落生态学中发展最为迅速&#xff0c;Hmsc是物种群落分层模型的缩写(Hierarchical Modelling of Species Communities)&#xff0c;它是一种基于…...

stm32f103zet6 ds18b20

main.c // main.c #include "sys.h" #include "ds18b20.h"int main(void){ uart_init(9600);delay_init();while(DS18B20_Init()) //DS18B20初始化 {printf("error");delay_ms(200);}while(1){printf("%4.2f\r\n",Get_Temp());}}ds18…...

【前端,TypeScript】TypeScript速成(六):函数

函数 函数的定义 定义一个最简单的加法函数&#xff1a; function add(a: number, b: number): number {return a b }&#xff08;可以看到 JavaScript/TypeScript 的语法与 Golang 也非常的相似&#xff09; 调用该函数&#xff1a; console.log(add(2, 3)) // out [LOG…...

React引入Echart水球图

在搭建React项目时候&#xff0c;遇到了Echart官方文档中没有的水球图&#xff0c;此时该如何配置并将它显示到项目中呢&#xff1f; 目录 一、拓展网站 二、安装 三、React中引入 1、在components文件夹下新建一个组件 2、在组件中引入 3、使用水波球组件 一、拓展网站 …...

谷歌浏览器的智能推荐功能使用指南

谷歌浏览器作为全球最受欢迎的网络浏览器之一&#xff0c;以其强大的功能和简洁的界面深受用户喜爱。其中&#xff0c;智能推荐功能通过利用先进的算法和数据分析&#xff0c;为用户提供个性化的内容推荐&#xff0c;大大提升了上网体验。本文将详细介绍如何开启和使用谷歌浏览…...

GitHub 上排名前 11 的开源管理后台(Admin Dashboard)项目

如果你是一名开发者&#xff0c;经常处理数据或参与项目管理&#xff0c;那么这篇文章绝对值得收藏&#xff01;当你需要一个高效、易用的管理后台&#xff08;Admin Dashboard&#xff09;项目时&#xff0c;本文会给你灵感。 在现代企业管理和业务运营中&#xff0c;管理后台…...

【运维】部署MKDocs

部署MKDocs obsidian 记录笔记&#xff0c;通过 mkdocs 私有化部署。 1 使用MKDocs创建笔记 创建仓库&#xff0c;安装 Material for MkDocs 和 mkdocs-minify-plugin mkdir tmp cd tmp git initpip install mkdocs-material pip install mkdocs-minify-pluginmkdocs new .2 …...

C# 读取多种CAN报文文件转换成统一格式数据,工具类:CanMsgRead

因为经常有读取CAN报文trace文件的需求&#xff0c;而且因为CAN卡不同、记录软件不同会导致CAN报文trace文件的格式都有差异。为了方便自己后续开发&#xff0c;我写了一个CanMsgRead工具类&#xff0c;只要提供CAN报文路径和CAN报文格式的选项即可将文件迅速读取转换为统一的C…...

计算机网络 (8)物理层的传输方式

一、串行传输与并行传输 串行传输 定义&#xff1a;串行传输是一种数据传输方式&#xff0c;指的是逐位地按照顺序传输数据。在串行传输中&#xff0c;数据位逐个按照一定的顺序进行传输&#xff0c;可以通过单条线路或信道进行。特点&#xff1a; 逐位传输&#xff1a;串行传输…...

【C#】WPF设置Separator为垂直方向

1. 方法1 <Separator BorderBrush"Gray"><Separator.LayoutTransform><RotateTransform Angle"90" /></Separator.LayoutTransform> </Separator>2. 方法2 <Separator Style"{StaticResource {x:Static ToolBar.S…...

太速科技-519-基于ZU19EG的4路100G光纤的PCIe 加速计算卡

基于ZU19EG的4路100G光纤的PCIe 加速计算卡 一、板卡概述 本板卡系我司自主设计研发&#xff0c;基于Xilinx公司Zynq UltraScale MPSOC系列SOC XCZU19EG-FFVC1760架构&#xff0c;支持PCIE Gen3x16模式。其中&#xff0c;ARM端搭载一组64-bit DDR4&#xff0c;总容量达…...

安卓入门二 Kotlin基础

Kotlin Kotlin的历史 Kotlin由Jet Brains公司开发设计&#xff0c;2011年公布第一版&#xff0c;2012年开源。 2016年发布1.0正式版&#xff0c;并且Jet Brains在IDEA加入对Kotlin的支持&#xff0c;安卓自此又有新的选择。 2019年谷歌宣布Kotlin成为安卓第一开发语言&#x…...

C++ ——— 单/多参数构造函数的隐式类型转换和 explicit 关键字

单参数构造函数 代码演示&#xff1a; class A { public:A(int i):_a(i){}private:int _a; }; 在 A 这个类中的构造函数只有一个参数&#xff0c;这就称之为单参数的构造函数 不同形式实例化对象 代码演示&#xff1a; A a1(1);A a2 2; a1 的实例化过程&#xff1a; 第…...

Java编程规约:集合处理

文章目录 I 集合处理【强制】【推荐】II 知识扩展I 集合处理 【强制】 不要在 foreach 循环里进行元素的 remove / add 操作。remove 元素请使用 iterator 方式,如果并发操作,需要对 iterator 对象加锁。// 正例: List<String> list = new ArrayList<>(...

IOS safari 播放 mp4 遇到的坎儿

起因 事情的起因是调试 IOS 手机下播放服务器接口返回的 mp4 文件流失败。对于没调试过移动端和 Safari 的我来说着实费了些功夫&#xff0c;网上和AI也没有讲明白。好在最终大概理清楚了&#xff0c;在这里整理出来供有缘人参考。 问题 因为直接用 IOS 手机的浏览器打开页面…...

前后端分离大创管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

摘要 随着信息技术的快速发展&#xff0c;高校创新创业项目&#xff08;大创&#xff09;管理逐渐向数字化、智能化方向转型。传统的管理模式依赖纸质文档和人工操作&#xff0c;效率低下且容易出错&#xff0c;难以满足日益增长的项目申报、评审和进度跟踪需求。大创管理系统旨…...

5种突破城通网盘限速的技术方案:ctfileGet工具实战指南

5种突破城通网盘限速的技术方案&#xff1a;ctfileGet工具实战指南 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 在数字化协作日益频繁的今天&#xff0c;城通网盘作为国内主流的文件分享平台之一&am…...

解决Flutter RefreshIndicator在单一列表项下的显示问题

在开发Flutter应用时,RefreshIndicator是一个非常有用的控件,它可以为列表视图提供下拉刷新的功能。然而,当列表中只有一个项目时,RefreshIndicator可能会遇到一个常见的问题:它不会显示。这篇博客将详细探讨这个问题的解决方案,并提供一个具体的实例。 问题描述 假设我…...

pymoo实战教程:从零开始构建你的第一个多目标优化模型

pymoo实战教程&#xff1a;从零开始构建你的第一个多目标优化模型 【免费下载链接】pymoo NSGA2, NSGA3, R-NSGA3, MOEAD, Genetic Algorithms (GA), Differential Evolution (DE), CMAES, PSO 项目地址: https://gitcode.com/gh_mirrors/py/pymoo pymoo是一个强大的Pyt…...

4.4【A】

进程之间不能直接访问对方内存所以必须用 Socket 共享内存 通信每个进程独立运行每个进程自己负责自己的连接网卡模拟器进程&#xff1a;监听 PCIe 连接QEMU 进程&#xff1a;主动连接 PCIe它们通过 Socket 建立连接&#xff0c;交换自我介绍然后用共享内存高速通信底层状态初…...

从SolidWorks到Simulink动画:手把手教你用URDF和Simscape搭建六轴机械臂仿真模型

六轴机械臂仿真全流程&#xff1a;从SolidWorks建模到Simulink动画生成实战指南 当我在实验室第一次看到自己设计的机械臂在Simulink中流畅地完成抓取动作时&#xff0c;那种成就感至今难忘。许多机器人工程师都曾面临这样的困境&#xff1a;在SolidWorks中精心设计的机械臂模型…...

别再死记硬背了!用Python+Matplotlib动态可视化5G NR的帧结构与RB资源分配

用Python动态解析5G NR帧结构&#xff1a;从理论到可视化实战 在通信技术快速迭代的今天&#xff0c;5G NR(新空口)作为第五代移动通信的核心技术&#xff0c;其灵活的帧结构设计一直是工程师和研究者关注的焦点。传统学习方式往往依赖静态图表和文字描述&#xff0c;让许多初学…...

避坑指南:RK3588以太网调试那些‘看起来通了但实际没通’的坑(附千兆网线识别与ifconfig -a用法)

RK3588以太网深度排雷手册&#xff1a;从"假连通"到真稳定的实战指南 当你看到eth0接口亮起绿色指示灯&#xff0c;ifconfig显示RX/TX数据包在跳动&#xff0c;甚至ping命令能收到零星回复时&#xff0c;是否觉得RK3588的网络已经调试成功&#xff1f;且慢——这可能…...

Palworld存档工具完全指南:高效管理与转换游戏数据

Palworld存档工具完全指南&#xff1a;高效管理与转换游戏数据 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools Palworld存档工具是一款专为Palwor…...

CVPR2025 | 对抗样本攻防前沿:从基础理论到多模态安全新挑战

1. 对抗样本攻防基础理论演进 对抗样本研究最早可以追溯到2013年Szegedy等人的开创性工作&#xff0c;他们发现通过在图像中添加人眼难以察觉的扰动&#xff0c;就能使深度神经网络产生错误分类。这个发现揭示了机器学习模型在输入空间中的脆弱性&#xff0c;也开启了对抗样本研…...