【RedHat9.0】Timer定时器——创建单调定时器实例

一个timer(定时器)的单元类型,用来定时触发用户定义的操作。要使用timer的定时器,关键是要创建一个定时器单元文件和一个配套的服务单元文件,然后启动这些单元文件。

定时器类型:

  • 单调定时器:即从一个时间点过一段时间后激活的定时任务
  • 实时定时器:通过日历事件激活定时任务。

匹配单元文件:

每个.timer文件所在目录都要有一个匹配的.service文件。 .timer文件用于激活并控制.service文件。

创建单调定时器

  • (一)编写任务脚本
  • (二)编写一个配套服务单元文件
  • (三)编写一个定时器单元文件
  • (四)测试
  • (五)Timer 单元文件

单调定时器适合按照相对时间的计划任务管理,这里以一个定期备份任务为例,要求开机(系统启动)后每隔3秒执行一次。

与自定义系统服务——创建Shell脚本设置为systemd系统服务实例操作类似多了一个timer文件,可以对比一起操作。

(一)编写任务脚本

这里是个简单的时间写入日志文件的脚本。

[root@localhost ~]# cat system.sh
#############################
#DESCRIPTION:将日期写入日志文件
#AUTHOR:Ley 
#CREATED4/3/2024 10:40
#############################
#!/bin/bash
echo `date` >> /root/system.txt
[root@localhost ~]# chmod +x system.sh      ##增加可执行权限
[root@localhost ~]# . system.sh             ##执行
[root@localhost ~]# cat system.txt          ##查看日志文件,脚本执行成功
Wed Apr 3 10:48:55 AM CST 2024

(二)编写一个配套服务单元文件

可以将其命名为boot_backup.service,保存在/etc/systemd/system目录中。


[root@localhost ~]# cd /etc/systemd/system
[root@localhost system]# cat boot_backup.service
[Unit]
Description=Backup boot
[Service]
ExecStart=bash /root/system.sh        ##添加可执行脚本
Type=simple

(三)编写一个定时器单元文件

可将其命名为boot_backup.timer,保存在/etc/systemd/system目录中。

[root@localhost system]# cat boot_backup.timer
[Unit]
Dsecription=Run boot weekly and on boot
[Timer]
OnUnitActiveSec=3s
[Install]
WantedBy=multi-user.target

(四)测试

[root@localhost system]# systemctl daemon-reload
[root@localhost system]# systemctl start boot_backup.timer
[root@localhost system]# systemctl status boot_backup.timer
● boot_backup.timer
     Loaded: loaded (/etc/systemd/system/boot_backup.timer; enabled; vendor pre>
     Active: active (elapsed) since Wed 2024-04-03 11:14:16 CST; 4s ago
      Until: Wed 2024-04-03 11:14:16 CST; 4s ago
    Trigger: n/a
   Triggers: ● boot_backup.service

Apr 03 11:14:16 localhost.localdomain systemd[1]: Started boot_backup.timer.

[4]+  Stopped                 systemctl status boot_backup.timer

在这里插入图片描述

  • tail -f filename
    说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。
[root@localhost ~]# tail -f system.txt
Wed Apr 3 11:16:48 AM CST 2024
Wed Apr 3 11:16:50 AM CST 2024
Wed Apr 3 11:17:17 AM CST 2024
Wed Apr 3 11:18:17 AM CST 2024
Wed Apr 3 11:18:41 AM CST 2024
Wed Apr 3 11:18:45 AM CST 2024
Wed Apr 3 11:19:17 AM CST 2024
Wed Apr 3 11:20:17 AM CST 2024
Wed Apr 3 11:21:17 AM CST 2024
Wed Apr 3 11:22:17 AM CST 2024

错误: 开始每3s只执行了一次,后面就是每分钟执行一次了!!!
说明.timer定时器单元文件没设置好。

(五)Timer 单元文件

[Timer]部分定制定时器。Systemd 提供以下一些字段。

OnActiveSec:定时器生效后,多少时间开始执行任务
OnBootSec:系统启动后,多少时间开始执行任务
OnStartupSec:Systemd 进程启动后,多少时间开始执行任务
OnUnitActiveSec:该单元上次执行后,等多少时间再次执行
OnUnitInactiveSec: 定时器上次关闭后多少时间,再次执行
OnCalendar:基于绝对时间,而不是相对时间执行
AccuracySec:如果因为各种原因,任务必须推迟执行,推迟的最大秒数,默认是60秒
Unit:真正要执行的任务,默认是同名的带有.service后缀的单元
Persistent:如果设置了该字段,即使定时器到时没有启动,也会自动执行相应的单元
WakeSystem:如果系统休眠,是否自动唤醒系统

看到AccuracySec字段:任务默认推迟时间是60s,而任务必须有推迟时间。如果不设置那么在执行一次后,系统无法立即反应过3s执行,那么采用默认推迟时间60s。因此我们要设置其为1us(微秒)、1ms(毫秒)

[root@localhost system]# cat boot_backup.timer
[Unit]
Dsecription=Run boot weekly and on boot
[Timer]
AccuracySec=1us
OnUnitActiveSec=3s
[Install]
WantedBy=multi-user.target

修改完.timer文件,重新执行如下命令:

[root@localhost system]# systemctl daemon-reload
[root@localhost system]# systemctl restart boot_backup.timer
[root@localhost system]# systemctl status boot_backup.timer

查看日志:每3s执行一次,成功!!!

[root@localhost system]# tail -f /root/system.txt
Wed Apr 3 11:29:08 AM CST 2024
Wed Apr 3 11:29:13 AM CST 2024
Wed Apr 3 11:29:16 AM CST 2024
Wed Apr 3 11:29:19 AM CST 2024
Wed Apr 3 11:29:22 AM CST 2024
Wed Apr 3 11:29:25 AM CST 2024
Wed Apr 3 11:29:28 AM CST 2024
Wed Apr 3 11:29:31 AM CST 2024
Wed Apr 3 11:29:34 AM CST 2024

Ctrl+c 退出!!!

[参考文章]
Systemd 定时器教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/513395.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

回溯算法 DFS

目录 回溯算法和dfs的区别回溯算法基本框架例题:【1,2,3】的全排列代码详解完整代码 DFS 本文思路、代码均参考于:https://labuladong.online/algo/essential-technique/backtrack-framework-2/#%E4%B8%80%E3%80%81%E5%85%A8%E6%8E%92%E5%88%…

【数字图像处理】图像的最近邻插值、双线性插值和双三次插值

图像最近邻插值、双线性插值和双三次插值 用 O ( X , Y ) O(X,Y) O(X,Y)表示 H W H\times W HW的原始图像, G ( X ^ , Y ^ ) G(\hat{X},\hat{Y}) G(X^,Y^)表示 H ^ Y ^ \hat{H}\times\hat{Y} H^Y^的目标图像。 最近邻插值 最近邻插值法令目标图像在 ( x ^ , y…

深入理解直播美颜SDK背后的深度学习原理

直播美颜SDK技术背后涉及了深度学习原理的应用,今天我将为大家讲解美颜SDK其中的深度学习算法,还有一些基本原理与关键技术。 一、深度学习在直播美颜中的应用 直播美颜SDK的核心是基于深度学习的算法模型。这些模型通常由多个卷积神经网络组成&#xf…

SCI一区 | Matlab实现BES-TCN-BiGRU-Attention秃鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现BES-TCN-BiGRU-Attention秃鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现BES-TCN-BiGRU-Attention秃鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

VS2022配置boost库-Windows为例

1. boost库下载 1)下载boost库源码:https://www.boost.org/ 2)以1.81版本为例,安装包如下 3)下载后解压 比如我是放在E盘下面的boost文件夹 2. 安装配置 1)打开VS2022命令行 2)切换安装…

智慧城市治理:构建全域覆盖的城市时空感知体系

TSINGSEE青犀AI算法中台是一款平台型产品,专注于提供各行业中小场景部署解决方案。平台具备接入广、性能强、支持跨平台、芯片国产化等特点,可提供丰富的视图接入能力和智能分析能力。 平台采用了多项IT高新技术,包括视频编解码技术、嵌入式…

蓝桥杯刷题-04-岛屿个数-DFS

#include <iostream> #include<bits/stdc.h> #define int long long using namespace std; const int N2e510; typedef pair<int,int>pii;map<pii, int>st;//记录从{x&#xff0c;y}的距离是多少 int a[N];//存储原始路径vector<pii>edge[N];//存…

C语言 | Leetcode C语言题解之第6题Z字形变换

题目&#xff1a; 题解&#xff1a; char * convert(char * s, int numRows){int n strlen(s), r numRows;if (r 1 || r > n) {return s;}int t r * 2 - 2;char * ans (char *)malloc(sizeof(char) * (n 1));int pos 0;for (int i 0; i < r; i) { // 枚举矩阵的…

回溯算法|46.全排列

力扣题目链接 class Solution { public:vector<vector<int>> result;vector<int> path;void backtracking (vector<int>& nums, vector<bool>& used) {// 此时说明找到了一组if (path.size() nums.size()) {result.push_back(path);re…

Acwing.1388 游戏(区间DP对抗思想)

题目 玩家一和玩家二共同玩一个小游戏。 给定一个包含 N个正整数的序列。 由玩家一开始&#xff0c;双方交替行动。 每次行动可以在数列的两端之中任选一个数字将其取走&#xff0c;并给自己增加相应数字的分数。&#xff08;双初始分都是 0分&#xff09; 当所有数字都被…

做好产品定位的3个重点

产品定位对于项目而言至关重要&#xff0c;正确的产品定位有助于项目锁定目标市场&#xff0c;精准满足客户需求。通过差异化产品策略&#xff0c;让产品在众多竞品中脱颖而出&#xff0c;形成独特竞争优势&#xff0c;从而有助于产品价值的实现。 因此做好产品定位迫在眉睫&am…

【智能算法】猎豹优化器(CO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2022年&#xff0c;MA Akbari等人受到自然界中猎豹捕猎行为启发&#xff0c;提出了猎豹优化器&#xff08;The Cheetah Optimizer&#xff0c;CO&#xff09;。 2.算法原理 2.1算法思想 CO法对猎…

软件测试学习(一)

1.软件测试的定义 软件是控制计算机硬件工作的工具。 软件基本组成&#xff1a;客服端、服务器、数据库 软件产生过程&#xff1a;需求产生->需求文档->设计效果图->产品开发->产品测试->部署上线 软件测试的定义&#xff1a;使用技术手段来验证软件产品是否…

Java编程使用CGLIB动态代理介绍与实战演示

文章目录 前言技术积累核心概念主要功能适用场景与JDK动态代理的对比 实战演示定义待代理的目标类实现MethodInterceptor接口使用代理对象 测试结果写在最后 前言 在Java编程中&#xff0c;CGLIB (Code Generation Library) 是一个强大的高性能代码生成库&#xff0c;它通过生…

5.Python数据分析—Pandas数据结构详讲

5.Python数据分析—Pandas数据结构详讲 摘要个人简介简介Series定义和特点创建方法属性和方法 DataFrame定义和特点创建方法数据获取和操作 索引对象种类和应用作用和管理 摘要 Pandas是一个开源的Python数据分析库&#xff0c;提供了高性能、易用的数据结构和数据分析工具。它…

向量数据库实战介绍

本文将介绍三种常用的向量数据库&#xff1a;faiss, Milvus和Qdrant&#xff0c;并给出一个具体的使用例子。 向量数据库&#xff08;Vector Database&#xff09;是一种专门用于存储、管理、查询、检索向量的数据库&#xff0c;主要应用于人工智能、机器学习、数据挖掘等领域。…

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)

继续上篇博文&#xff1a;STM32学习和实践笔记&#xff08;4&#xff09;: 分析和理解GPIO_InitTypeDef GPIO_InitStructure (a)-CSDN博客 往下写&#xff0c; 为什么&#xff1a;当GPIO_InitStructure.GPIO_PinGPIO_Pin_0 ; 时&#xff0c;其实就是将对应的该引脚的寄存器地…

如何处理Flutter内存泄漏检测和优化

处理Flutter内存泄漏问题是构建高性能、稳定的应用程序的关键部分之一。在本文中&#xff0c;我将详细介绍如何检测和优化Flutter内存泄漏问题&#xff0c;以确保应用程序的良好性能和用户体验。 1. 了解内存泄漏 在深入了解如何处理Flutter内存泄漏之前&#xff0c;首先需要了…

基于Springboot + MySQL + Vue 大学新生宿舍管理系统 (含源码)

目录 &#x1f4da; 前言 &#x1f4d1;摘要 &#x1f4d1;操作流程 &#x1f4da; 系统架构设计 &#x1f4da; 数据库设计 &#x1f4ac; 管理员信息属性 &#x1f4ac; 学生信息实体属性 &#x1f4ac; 宿舍安排信息实体属性 &#x1f4ac; 卫生检查信息实体属性 &…

LeetCode 第391场周赛个人题解

目录 哈沙德数 原题链接 思路分析 AC代码 换水问题 II 原题链接 思路分析 AC代码 交替子数组计数 原题链接 思路分析 AC代码 最小化曼哈顿距离 原题链接 思路分析 AC代码 哈沙德数 原题链接 思路分析 签到题&#xff0c;不说了 AC代码 class Solution:def s…