如何为JAR设置定时重启?

AI越来越火了,我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站

前面我们说过了如何将jar交由Systemctl管理,下面我们说说如何为被Systemctl管理的jar设置重启脚本。

  1. Systemd 服务单元文件
    首先最重要的一点是确保jar已经被Systemctl管理,前面交由其管理的是名为 hello.jar 的核心文件,并定义了如何启动、停止和重启 JAR 文件。需要确保这个文件已经存在并正确配置。

该文件位置:

 /etc/systemd/system/hello.service
  1. Systemd 定时器单元文件 (hello.timer)
    这是我们提供的定时器文件,用于每天凌晨 3 点触发重启服务。它的内容如下:
[Unit]
Description=Restart Hello Service Daily

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
Unit=hello.service  # 明确指定要触发的服务

[Install]
WantedBy=timers.target
  • OnCalendar:设置定时任务的时间(每天凌晨 3 点)。
  • Persistent=true:如果系统在定时任务触发时关机,任务会在下次启动时执行。

该文件位置:/etc/systemd/system/hello.timer。

  • 启用定时器:sudo systemctl enable hello.timer
  • 关闭定时器: systemctl disable hello.timer
  • 检查是否已启用: systemctl is-enabled hello.timer
  • 立即启动定时器:sudo systemctl start hello.timer
  • 检查定时器状态:systemctl list-timerssudo systemctl status hello.timer
  • 查看定时器日志: journalctl -u hello.timer
  • 测试定时器: systemd-analyze calendar "*-*-* 03:00:00"
  • 修改配置后重新加载:加载配置-> sudo systemctl daemon-reload ;重启定时器->sudo systemctl restart hello.timer
  1. 定时器如何工作
  • 当定时器触发时,Systemd 会自动调用与定时器同名的服务(即 hello.service)。

  • hello.service 会执行 ExecStart 中的命令(即启动 JAR 文件)。

  • 如果服务已经在运行,Systemd 会先停止服务,然后重新启动它。

  1. 验证
  • 查看定时器状态:systemctl list-timers

应该看到:

[root@hcss-ecs-1675 usr]# systemctl list-timers
NEXT                         LEFT       LAST                         PASSED       UNIT                         ACTIVATES
Tue 2025-03-04 13:43:00 CST  11min left Tue 2025-03-04 11:47:53 CST  1h 44min ago dnf-makecache.timer          dnf-makecache.service
Tue 2025-03-04 14:00:00 CST  28min left n/a                          n/a          hello.timer                  hello.service
Wed 2025-03-05 00:00:00 CST  10h left   Tue 2025-03-04 09:07:01 CST  4h 24min ago unbound-anchor.timer         unbound-anchor.service
Wed 2025-03-05 09:21:53 CST  19h left   Tue 2025-03-04 09:21:53 CST  4h 10min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service

4 timers listed.
Pass --all to see loaded but inactive timers, too.

问题:为什么我按照配置做了,定时脚本也运行了,但我的jar仍然没有重启?
分析:定时器hello.timer的作用指定时间触发hello.service,但如果触发时hello.service已经在运行了,系统不会重新启动它,除非服务配置允许重启。但一般情况下定时器只会触发类型为“start”的操作,而不是“restart”。
解决方案:通过中间服务触发重启。

  1. 创建重启专用服务单元
    新建文件 /etc/systemd/system/hello-restart.service:
[Unit]
Description=Restart Hello Service

[Service]
Type=oneshot
ExecStart=/bin/systemctl restart hello.service

[Install]
WantedBy=multi-user.target
  1. 修改定时器配置指向中间服务
#更新 /etc/systemd/system/hello.timer
[Unit]
Description=Restart Video Service Daily

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
Unit=hello-restart.service  # 指向新服务单元

[Install]
WantedBy=timers.target
  1. 重载配置并启用
sudo systemctl daemon-reload
sudo systemctl enable hello-restart.service
sudo systemctl restart hello.timer

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

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

相关文章

VSCode 移除EmmyLua插件的红色波浪线提示

VSCode 中安装插件EmmyLua,然后打开lua文件的时候,如果lua代码引用了C#脚本的变量,经常出现 “undefined global variable: UnityEngineEmmyLua(undefined-global)” 的红色波浪线提示,这个提示看着比较烦人,我们可以通…

MWC 2025 | 紫光展锐联合移远通信推出全面支持R16特性的5G模组RG620UA-EU

2025年世界移动通信大会(MWC 2025)期间,紫光展锐联合移远通信,正式发布了全面支持5G R16特性的模组RG620UA-EU,以强大的灵活性和便捷性赋能产业。 展锐芯加持,关键性能优异 RG620UA-EU模组基于紫光展锐V62…

springboot425-基于SpringBoot的BUG管理系统(源码+数据库+纯前后端分离+部署讲解等)

💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm&#xf…

机器人“照镜子”:开启智能新时代

机器人也爱 “照镜子”? 在科技飞速发展的今天,机器人的身影越来越频繁地出现在我们的生活和工作中。它们承担着各种各样的任务,从工业生产线上的精密操作,到家庭中的清洁服务,再到危险环境下的救援工作。然而&#xf…

让 LabVIEW 程序更稳定

LabVIEW 开发的系统,尤其是工业级应用,往往需要长时间稳定运行,容不得崩溃、卡顿或数据丢失。然而,许多系统在实际运行中会遭遇内存泄漏、通信中断、界面卡顿等问题,导致生产中断甚至设备损坏。如何设计一个既稳定又易…

基于CURL命令封装的JAVA通用HTTP工具

文章目录 一、简要概述二、封装过程1. 引入依赖2. 定义脚本执行类 三、单元测试四、其他资源 一、简要概述 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具&…

npm ERR! code 128 npm ERR! An unknown git error occurred

【问题描述】 【问题解决】 管理员运行cmd(右键window --> 选择终端管理员) 执行命令 git config --global url.“https://”.insteadOf ssh://git cd 到项目目录 重新执行npm install 个人原因,这里执行npm install --registryhttps:…

汽车视频智能包装创作解决方案,让旅途记忆一键升级为影视级大片

在智能汽车时代,行车记录已不再是简单的影像留存,而是承载情感与创意的载体。美摄科技依托20余年视音频领域技术积累,推出汽车视频智能包装创作解决方案,以AI驱动影像处理与艺术创作,重新定义车载视频体验,…

Qt中txt文件输出为PDF格式

main.cpp PdfReportGenerator pdfReportGenerator;// 加载中文字体if (QFontDatabase::addApplicationFont(":/new/prefix1/simsun.ttf") -1) {QMessageBox::warning(nullptr, "警告", "无法加载中文字体");}// 解析日志文件QVector<LogEntr…

nlp进阶

1 Rnn RNN(Recurrent Neural Network),中文称作循环神经网络,它一般以序列数据为输入,通过网络内部的结构段计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出. 单层网络结构 在循环 rnn处理的过程 rnn类别 n - n n - 1 使用sigmoid 或者softmax处理 应用在分类中…

2024 JAVA面试题

第一章-Java基础篇 1、你是怎样理解OOP面向对象 面向对象是利于语言对现实事物进行抽象。面向对象具有以下特征&#xff1a; 继承****&#xff1a;****继承是从已有类得到继承信息创建新类的过程 封装&#xff1a;封装是把数据和操作数据的方法绑定起来&#xff0c;对数据的…

浅色系可视化大屏看起来确实很漂亮,但用到的地方确实很少

在数字化信息飞速发展的时代&#xff0c;可视化大屏作为信息展示的重要载体&#xff0c;广泛应用于各类场景。其中&#xff0c;浅色系可视化大屏以其独特的视觉风格&#xff0c;在众多展示方案中脱颖而出&#xff0c;给人以清新、舒适的视觉感受。然而&#xff0c;尽管浅色系可…

蓝桥杯备考:动态规划线性dp之下楼梯问题进阶版

老规矩&#xff0c;按照dp题的顺序 step1 定义状态表达 f[i]表示到第i个台阶的方案数 step2:推导状态方程 step3:初始化 初始化要保证 1.数组不越界 2.推导结果正确 如图这种情况就越界了&#xff0c;我们如果把1到k的值全初始化也不现实&#xff0c;会增加程序的时间复杂度…

LLM 大模型基础认知篇

目录 1、基本概述 2、大模型工作原理 3、关键知识点 &#xff08;1&#xff09;RAG 知识库 &#xff08;2&#xff09;蒸馏 &#xff08;3&#xff09;微调 &#xff08;4&#xff09;智能体 1、基本概述 大型语言模型&#xff08;Large Language Model, LLM&#xff09…

物业管理系统源码 物业小程序源码

物业管理系统源码 物业小程序源码 一、基础信息管理 1. 房产信息管理 记录楼栋、单元、房间的详细信息&#xff08;面积、户型、产权等&#xff09;。 管理业主/租户的档案&#xff0c;包括联系方式、合同信息等。 2. 公共资源管理 管理停车场、电梯、绿化带、公…

Delphi连接MySql数据库房

在看Delpih6数据库开发实例导航这本书时&#xff0c;里面的数据库管理系统用的InterBase&#xff0c;但是Delphi11中已经没有这个东西了&#xff0c;我就想到利用MS的access但是里面有很多的SQL语句不支持&#xff0c;比如设置字段的默认值等&#xff0c;后来我想到连接到MySQL…

[51 单片机] --串口编程

1&#xff0c;通讯方式基本概念 1&#xff0c;按照 --> 数据传送方式串行通讯&#xff1a;使用一条数据线&#xff0c;将数据一位一位地依次传输&#xff0c;每一位数据占据一个固定的时间长度&#xff0c;串行通信的特点&#xff1a;传输线少&#xff0c;长距离传送时成本…

基础算法——模拟

模拟&#xff0c;顾名思义&#xff0c;就是题⽬让你做什么你就做什么&#xff0c;考察的是将思路转化成代码的代码能⼒。 这类题⼀般较为简单&#xff0c;属于竞赛⾥⾯的签到题&#xff08;但是&#xff0c;万事⽆绝对&#xff0c;也有可能会出现让⼈⾮常难受的 模拟题&#xf…

SparkStreaming之04:调优

SparkStreaming调优 一 、要点 4.1 SparkStreaming运行原理 深入理解 4.2 调优策略 4.2.1 调整BlockReceiver的数量 案例演示&#xff1a; object MultiReceiverNetworkWordCount {def main(args: Array[String]) {val sparkConf new SparkConf().setAppName("Networ…

Jenkins 删除历史构建记录

中文:系统管理 > 脚本命令行: 英文:Manage Jenkins > Script Console def jobName "Wens-Web" //删除的项目名称 def maxNumber 105 // 保留的最小编号&#xff0c;意味着小于该编号的构建都将被删除 Jenkins.instance.getItemByFullName(jobName).build…