Linux 下执行定时任务之 Systemd Timers

news2024/11/23 14:51:44

不知道 ECS 因为什么缘故,上面安装的 MySQL 服务老是不定期挂掉,本来想通过 Linux 得 Cron 配置个半小时的定时检测任务,结果一直没有执行,因此又尝试使用了 Systemd Timers 进行了重新配置,简要做个记录。

Systemd Timers 是现代 Linux 系统中 CRON 的一个强大替代品。它具有以下优点:
1. 更精确的时间控制,支持毫秒级精度。
2. 更好的日志管理和错误报告。
3. 可以轻松处理错过的任务(例如,系统关机时)。
4. 与其他 systemd 服务集成更好。

Systemd Timers 由两个主要组件组成:
1. Timer 单元(.timer 文件):定义何时触发任务。
2. Service 单元(.service 文件):定义要执行的实际任务。
当 Timer 单元触发时,它会启动相应的 Service 单元,这种分离允许更灵活的配置和管理。

第一步,创建需要执行的脚本文件。

这里目的是要检测 MySQL 服务是否启动,如果未启动,则尝试重启并再次检测,脚本路径比如在 /home/shell/mysql_restart.sh 下,内容参考如下:

#!/bin/bash

# 检查MySQL进程是否在运行
echo "检查MySQL进程是否在运行..." >> mysql_restart.log
if ! pgrep -x "mysqld" > /dev/null ; then
    echo "MySQL进程未运行,正在尝试重启服务..." >> mysql_restart.log
    systemctl restart mysqld
    echo "MySQL重启命令已执行,接下来进入睡眠等待..." >> mysql_restart.log

    # 稍等一会儿再检查
    sleep 5

    # 再次检查MySQL进程
    echo "睡眠5秒后再次检查MySQL进程是否在运行..." >> mysql_restart.log
    if pgrep -x "mysqld" > /dev/null ; then
        echo "MySQL服务重启成功,当前运行中。" >> mysql_restart.log
    else
        echo "MySQL服务重启失败,请检查日志以获取更多信息。" >> mysql_restart.log
    fi
else
    echo "MySQL进程正在运行。" >> mysql_restart.log
fi

第二步,创建 Service 单元。

在路径 /etc/systemd/system 下,创建需要执行脚本的 Service 单元,比如 mysql_restart.service,内容参考如下:

[Unit]
Description=定时运行MySQL重启脚本

[Service]
Type=simple
ExecStart=/home/shell/mysql_restart.sh

第三步,创建 Timer 单元。

还是在路径 /etc/systemd/system 下,创建需要执行服务的 Timer 单元,比如 mysql_restart.timer,内容参考如下:

[Unit]
Description=定时运行MySQL重启脚本服务

[Timer]
# OnCalendar=houry
# Persistent=true
OnBootSec=1min
OnUnitActiveSec=30min

[Install]
WantedBy=timers.target

其中,OnBootSec 表示系统重启后多久开始执行定时任务;OnUnitActiveSec 表示当服务单元进入活动状态时多久执行一次定时任务。

第四步,加载服务并启动定时任务。

systemctl daemon-reload

systemctl enable mysql_restart.timer

systemctl start mysql_restart.timer

当然 Cron 定时任务还有很多其它的替代方法来实现,比如 Anacron、at 命令等,可以自行尝试,这里就不细展开说了,Good Luck!

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

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

相关文章

【星闪EBM-H63开发板】AT固件的接口简介

引言 前面介绍了星闪EBM-H63开发板的透传固件,现在介绍一下AT固件。AT固件比透传固件要复杂的多,都让功能也多很多,可以配置很多星闪相关的参数。AT固件没有AT命令模式和数据模式切换的问题,因为收发的数据是出现在AT命令中的。 …

51单片机教程(四)- 点亮LED灯

1、项目分析 让输入/输出口的P1.0连接一盏LED灯进行点亮。 2、技术准备 1 LED组成 ​ 说明 二极管有 P型 和 N型材料构成,通常是:硅/锗 掺杂其他元素(硼、磷等) 电子是带负电的,是负电荷的载体,电子流…

开源库 FloatingActionButton

开源库FloatingActionButton Github:https://github.com/Clans/FloatingActionButton 这个库是在前面这个库android-floating-action-button的基础上修改的,增加了一些更强大和实用的特性。 特性: Android 5.0 以上点击会有水波纹效果 可以选择自定义…

Ubuntu 24.04上启用 root 用户通过 SSH 和图形界面进行登录

一、启用 root 用户的密码登录 设置 root 用户密码: 在终端中输入以下命令为 root 用户设置一个密码: testtest-virtual-machine:~$ sudo passwd root [sudo] test 的密码: 新的密码: 无效的密码: 密码是一个回文…

深度学习基础知识-损失函数

目录 1. 均方误差(Mean Squared Error, MSE) 2. 平均绝对误差(Mean Absolute Error, MAE) 3. Huber 损失 4. 交叉熵损失(Cross-Entropy Loss) 5. KL 散度(Kullback-Leibler Divergence&…

基于vue框架的的考研信息共享平台v0eyp(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:国家政策,用户,院校政策,院校信息,考研资料,资料分类,考研论坛 开题报告内容 基于Vue框架的考研信息共享平台开题报告 一、研究背景与意义 随着考研人数的逐年增长,考研学生对高效、便捷、个性化的信息获取需求愈发强烈。…

区别:矩阵合同和矩阵酉相似

矩阵的合同和酉相似在许多方面具有相似性,但也有明显的区别。 定义 矩阵合同:给定矩阵 A 和 B ,若存在一个非奇异矩阵 P ,使得 则称矩阵 A 和 B 是合同的。合同变换常用于实对称矩阵的特征问题等。 酉相似:给定矩阵 …

海的回忆:海滨学院班级记忆录技术实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

半个月,练完这50个Python实战项目你就牛了!

今日精选50个Python实战项目,边做边学,让Python技能突飞猛进! 好记性不如烂笔头,实践是提升技能的王道!这70个项目涵盖广泛,难度亲民,特别适合Python新手入门与进阶。它们不仅实用性强&#xf…

贪心算法习题其三【力扣】【算法学习day.20】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

【Python游戏开发】石头剪刀布游戏(附完整Python完整代码)

石头剪刀布游戏:Pygame实现 结果图前言核心函数思考步骤实现原理和公式代码实现结论结果图 前言 石头剪刀布是一种经典的猜拳游戏,简单易玩但却蕴含着一定的策略性。本文将介绍如何使用Python和Pygame库开发一个简单的石头剪刀布游戏,并探讨其中的核心功能实现和思考过程。 …

Python | Leetcode Python题解之第526题优美的排列

题目&#xff1a; 题解&#xff1a; class Solution:def countArrangement(self, n: int) -> int:f [0] * (1 << n)f[0] 1for mask in range(1, 1 << n):num bin(mask).count("1")for i in range(n):if mask & (1 << i) and (num % (i …

阿里云k8s-master部署CNI网络插件遇到的问题

问题 按照网络上的部署方法 cd /opt/k8s # 下载 calico-kube-controllers配置文件&#xff0c;可能会网络超时 curl https://docs.projectcalico.org/manifests/calico.yaml -O kubectl apply -f calico.yaml 试了很多次都不行&#xff0c;k8s-master都是Not ready的状态 ca…

【数据结构与算法】第8课—数据结构之二叉树(堆)

文章目录 1. 树1. 什么是树&#xff1f;1.2 树的相关概念1.3 树的表示法 2. 二叉树2.1 特殊的二叉树2.2 二叉树的性质2.3 二叉树的存储结构 3. 实现顺序结构二叉树3.1 堆的概念3.2 堆的实现3.2.1 堆的数据结构3.2.2 堆的初始化3.2.3 堆插入数据3.2.4 删除堆顶数据3.2.5 堆的判空…

基于MATLAB人脸检测的汽车疲劳驾驶检测

课题介绍 疲劳驾驶导致汽车交通事故逐年增加&#xff0c;为了提升驾车的安全性&#xff0c;需对驾驶员疲劳状态实时监测并及时提醒. 为了提高疲劳驾驶判断效率及准确率&#xff0c;本文运用Viola-Jones 框架特征矩阵进行人脸预判断&#xff1b;预判断过程中为了减少Haar 值计算…

【p2p、分布式,区块链笔记 Torrent】WebTorrent的上传和下载界面

上传 upload.html client.seed <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>文件上传与哈希值&l…

vue3uniapp实现自定义拱形底部导航栏,解决首次闪烁问题

前言&#xff1a; 我最初在网上翻阅查找了很多方法&#xff0c;发现大家都是说在page.json中tabbar中添加&#xff1a;"custom": true,即可解决首次闪烁的问题&#xff0c;可是添加了我这边还是会闪烁&#xff0c;因此我这边改变了思路&#xff0c;使用了虚拟页面来解…

软考系统分析师知识点三一:案例知识点二

前言 今年报考了11月份的软考高级&#xff1a;系统分析师。 考试时间&#xff1a;11月9日。 倒计时&#xff1a;6天。 目标&#xff1a;优先应试&#xff0c;其次学习&#xff0c;再次实践。 复习计划第三阶段&#xff1a;总结案例知识点&#xff0c;并作为论文的框架知识…

WorkFlow源码剖析——Communicator之TCPServer(上)

WorkFlow源码剖析——Communicator之TCPServer&#xff08;上&#xff09; 前言 上一篇博客已经介绍了一下WorkFlow GO-Task的实现原理。本文会介绍一下WorkFlow Tcp Server端的一些实现细节以及有趣的思想。因为这部分涉及的内容有点多&#xff0c;一些有趣的细节也希望能完…

嵌入式硬件电子电路设计(一)开关电源Buck电路

目录 Buck电路基本结构 1. 开关闭合&#xff08;SW 闭合&#xff09; 2. 开关断开&#xff08;SW 断开&#xff09; 3. 开关控制和占空比 MP1584电路分析 其他Buck芯片的电路参考 Buck电路基本结构 下图是简化之后的BUCK电路主回路。下面分析输出电压的产生K闭合后&…