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

news2024/10/6 6:51:14

一个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 定时器教程

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

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

相关文章

解析html内容的h标签成目录树(markdown解析出来的html)

一.本人用的markdown插件是cherry-markdown,个人觉得比较好用,画图和数学公式都整合的很好 https://github.com/Tencent/cherry-markdown 二.背景 经过markdown解析的html,要取里面的h标签转换成目录树,发现这里面都要人工计算&…

EXCEL-VB编程实现自动抓取多工作簿多工作表中的单元格数据

一、VB编程基础 1、 EXCEL文件启动宏设置 文件-选项-信任中心-信任中心设置-宏设置-启用所有宏 汇总文件保存必须以宏启动工作簿格式类型进行保存 2、 VB编程界面与入门 参考收藏 https://blog.csdn.net/O_MMMM_O/article/details/107260402?spm1001.2014.3001.5506 二、…

用Vue仿了一个类似抖音的App

大家好,我是 Java陈序员。 今天,给大家介绍一个基于 Vue3 实现的高仿抖音开源项目。 关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。 项目介绍 douyin —— 一个基于 Vue、Vite 实…

解决uCharts图表在微信小程序层级过高问题

uniapp微信小程图表层级过高问题? 项目中涉及 uCharts图表,在 App/H5端均正常使用,微信小程序 存在层级问题! 文章目录 uniapp微信小程图表层级过高问题?效果图遇到问题解决方案 啰嗦一下~,自己的粗心 在实…

Firefox 关键词高亮插件的简单实现

目录 1、配置 manifest.json 文件 2、编写侧边栏结构 3、查找关键词并高亮的方法 3-1) 如果直接使用 innerHTML 进行替换 4、清除关键词高亮 5、页面脚本代码 6、参考 1、配置 manifest.json 文件 {"manifest_version": 2,"name": &quo…

HDLbits 刷题 --Always nolatches

学习: Your circuit has one 16-bit input, and four outputs. Build this circuit that recognizes these four scancodes and asserts the correct output. To avoid creating latches, all outputs must be assigned a value in all possible conditions (See also always…

内存管理是如何影响系统的性能的

大家好,今天给大家介绍内存管理是如何影响系统的性能的,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 内存管理对系统性能的影响至关重要,主要体现在以下…

课程设计项目3.2:基于振动信号分析的电机轴承故障检测

01.课程设计内容 02.代码效果图 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复:MATLAB课程设计本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新…

Js之运算符与表达式——②

运算符:也叫操作符,是一种符号。通过运算符可以对一个或多个值进行运算,并获取运算结果。 表达式:由数字、运算符、变量的组合(组成的式子)。 表达式最终都会有一个运算结果,我们将这个结果称…

【cache】卡常

来源于《国家集训队2024论文集》中的《论现代硬件上的常数优化》 个人总结: 不要开二的次幂作为维度的数组,否则常数会变大【存疑】。总是保证内存访问连续性更高。比如 st表,把log维放在第二维,会导致内存访问距离最大为N*LOG。…

权限提升技术:攻防实战与技巧

本次活动赠书1本,包邮到家。参与方式:点赞收藏文章即可。获奖者将以私信方式告知。 网络安全已经成为当今社会非常重要的话题,尤其是近几年来,我们目睹了越来越多的网络攻击事件,例如公民个人信息泄露,企业…

Vulnhub:MY FILE SERVER: 1

目录 信息收集 1、arp 2、nmap 3、whatweb WEB web信息收集 dirmap FTP匿名登录 enum4linux smbclient showmount FTP登录 ssh-kegen ssh登录 提权 系统信息收集 脏牛提权 get root 信息收集 1、arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l I…

信息咨询模块

信息资讯 资讯文章专题、互动评论、自定义多级分类,打造本地新闻圈 简介 本项目旨在打造一个本地新闻资讯平台,为用户提供以下功能: 资讯文章:提供本地新闻、生活、娱乐等各类资讯文章。专题:针对重要事件或热门话…

E4438C安捷伦E4438C信号发生器

181/2461/8938产品概述: Agilent / HP E4438C ESG 矢量信号发生器结合了出色的 RF 性能和复杂的基带生成功能,可在高达 6 GHz 的基带、IF 和 RF 频率上提供经过校准的测试信号。Agilent / HP E4438C ESG 矢量信号发生器提供具有任意波形和实时 I/Q 功能…

波士顿房价预测案例(python scikit-learn)---多元线性回归(多角度实验分析)

波士顿房价预测案例(python scikit-learn)—多元线性回归(多角度实验分析) 这次实验,我们主要从以下几个方面介绍: 一、相关框架介绍 二、数据集介绍 三、实验结果-优化算法对比实验,数据标准化对比实验&#xff0…

输入url到页面显示过程的优化

浏览器架构 线程:操作系统能够进行运算调度的最小单位。 进程:操作系统最核心的就是进程,他是操作系统进行资源分配和调度的基本单位。 一个进程就是一个程序的运行实例。启动一个程序的时候,操作系统会为该程序创建一块内存&a…

​AI大模型:产品经理的新助手,还是捣蛋鬼?

在科技飞速发展的今天,AI大模型成为了许多行业的“新宠儿”。它们不仅在语音识别、图像处理等方面表现出色,甚至还能写代码、写新闻,甚至写需求文档。这让许多产品经理心动不已,心想:有了AI大模型的帮助,岂…

完全没想到docker启动败在了这里!

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 故事背景 前几天帮同事部署一个环境,用他写的安装脚本部署,其中一台服务器就需要安装docker&#xff0c…

Day43 动态规划 part05

Day43 动态规划 part05 1049.最后一块石头的重量II 我的思路: 提示说和划分两个和相等的子集差不多,猛然想到,这道题不就是划分子集,用sum - 和最大*2 代码就是划分和相同的子集的变形 解答: class Solution {public int last…

jsp实现增删改查——(三)用Echarts图表统计学生信息

学生信息CRUD——Echarts显示生活费 目录结构 创建一个js文件夹,将echarts.min.js放到里面。 功能实现 与之前我们写的jsp文件(含有html代码、Java代码)不同的是,实现Echarts对生活费的显示,需要调用echarts.min.js…