瑞_Linux中部署配置Java服务并设置开机自启动
文章目录
- 背景
- Linux服务配置步骤并设置开机自启动
- 附-Linux服务常用指令

🙊 前言:由于博主在工作时,需要将服务部署到 Linux 服务器上运行,每次通过指令启动服务非常麻烦,所以将 jar 包部署的服务设置开机自启动,特此记录
背景
由于是记录在 Linux 环境下配置 jar 包程序并将其配置为 Linux 服务并设置开机自自动,所以需要 Linux 以及相关 Java 环境。博主使用的SSH客户端远程连接工具是 MobaXterm,有需要的小伙伴可以参考《瑞_Java所有相关环境及软件的安装和卸载》
步骤中所需的路径参考如下 ⬇️
1️⃣ JDK 安装路径/usr/local/jdk1.8,即 Java 程序执行路径/usr/local/jdk1.8/bin/java


2️⃣ 需要配置为服务的 jar 包工作路径/home/ray-project/ray-monitor,以及 jar 包所在路径/home/ray-project/ray-monitor/ray-monitor.jar

Linux服务配置步骤并设置开机自启动
1️⃣ 进入 Linux 系统服务路径
cd /usr/lib/systemd/system/
2️⃣ 新建服务文件,如ray_monitor.service
vi ray_monitor.service
3️⃣ 服务文件内容参考如下⬇️
[Unit]
# 服务描述
Description=ray_monitor
# 指定该服务在哪个目标(target)之后启动。network.target表示网络服务已经启动并可用后,再启动这个服务
After=network.target[Service]
# 指定服务类型为简单类型(simple),这意味着服务将一直运行,直到被停止
Type=simple
# 指定服务的工作目录
WorkingDirectory=/home/ray-project/ray-monitor/
# 设置服务的重启策略,这里设置为always,表示只要服务进程终止,就会自动重启。且Restart 先执行ExecStop, 再执行ExecStart
Restart=always
# 定义启动该服务时执行的命令,并设置远程调试监听端口
ExecStart=/usr/local/jdk1.8/bin/java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=48644 -jar ./ray-monitor.jar
# 定义停止该服务时执行的命令。这里使用kill -15发送SIGTERM信号给主进程($MAINPID)
ExecStop=/usr/bin/kill -15 $MAINPID
# 指定成功退出的状态码。由于Java进程在收到SIGTERM信号后会返回143,所以这里设置为143。正常kill执行成功是返回0
SuccessExitStatus=143[Install]
# 指定该服务属于哪个目标(target)。multi-user.target是默认的多用户目标,意味着该服务将在多用户模式下启动
WantedBy=multi-user.target
vi 指令的使用 1️⃣ 保存并退出:在 vi 的命令模式下(按下 Esc 键确保处于命令模式),输入
:wq并按 Enter 键。这个命令会将当前编辑的内容保存到文件中,然后退出 vi
2️⃣ 强制保存并退出:如果文件没有写入权限,但你想强制保存并退出,可以使用:wq!命令
3️⃣ 仅保存不退出:如果你只想保存当前编辑的内容而不退出 vi,可以输入:w并按 Enter 键
4️⃣ 仅退出不保存:如果你想放弃所有未保存的更改并退出 vi,可以输入:q!并按 Enter 键
命令模式与其他模式的关系 与输入模式的关系:在命令模式下,按下
i键可以切换到输入模式,此时用户可以开始输入文本。完成输入后,按下 Esc 键可以返回到命令模式
与末行模式的关系:在命令模式下,按下冒号:可以切换到底行模式,以执行文件管理操作,如保存文件和退出 vi。完成操作后,按下 Esc 键可以返回到命令模式
4️⃣ 重新加载 systemd 守护进程的配置文件,使配置文件生效
sudo systemctl daemon-reload
5️⃣ 设置服务开机自启动
sudo systemctl enable ray_monitor.service

6️⃣ 启动服务
sudo systemctl start ray_monitor.service
7️⃣ 检查服务状态
sudo systemctl status ray_monitor.service

瑞:如果服务启动异常,可以通过
journalctl -xe或sudo systemctl status xxx.service -l进行错误排查
# 查看启动日志错误详情
journalctl -xe
附-Linux服务常用指令
瑞:以下命令中
XXX.service可以改为XXX,即不需要.service也能执行
# 设置XXX服务开机自启动
sudo systemctl enable xxx.service
# 移除XXX服务开机自启动的设置
sudo systemctl disable xxx.service
# 重新加载 systemd 守护进程的配置文件,使配置文件生效
sudo systemctl daemon-reload# 查看XXX服务状态
sudo systemctl status xxx.service
# 重新加载指定服务的配置文件,而不需要中断服务
sudo systemctl reload xxx.service
# 停止XXX服务,如果设置了服务开机自启动,则服务器重启后仍然会自启动
sudo systemctl stop xxx.service
# 开启XXX服务,如果没有设置服务开机自启动,则服务器重启后仍然不会自启动
sudo systemctl start xxx.service
如果觉得这篇文章对您有所帮助的话,请动动小手点波关注💗,你的点赞👍收藏⭐️转发🔗评论📝都是对博主最好的支持~
相关文章:
瑞_Linux中部署配置Java服务并设置开机自启动
文章目录 背景Linux服务配置步骤并设置开机自启动附-Linux服务常用指令 🙊 前言:由于博主在工作时,需要将服务部署到 Linux 服务器上运行,每次通过指令启动服务非常麻烦,所以将 jar 包部署的服务设置开机自启动&#x…...
javaEE-多线程进阶-JUC的常见类
juc:指的是java.util.concurrent包,该包中加载了一些有关的多线程有关的类。 目录 一、Callable接口 FutureTask类 参考代码: 二、ReentrantLock 可重入锁 ReentrantLock和synchronized的区别: 1.ReentantLock还有一个方法:…...
Flume拦截器的实现
Flume conf文件编写 vim file_to_kafka.conf#定义组件 a1.sources r1 a1.channels c1#配置source a1.sources.r1.type TAILDIR a1.sources.r1.filegroups f1 a1.sources.r1.filegroups.f1 /Users/zhangjin/model/project/realtime-flink/applog/log/app.* # 设置断点续传…...
Swift Combine 学习(四):操作符 Operator
Swift Combine 学习(一):Combine 初印象Swift Combine 学习(二):发布者 PublisherSwift Combine 学习(三):Subscription和 SubscriberSwift Combine 学习(四&…...
leetcode 173.二叉搜索树迭代器栈绝妙思路
以上算法题中一个比较好的实现思路就是利用栈来进行实现,以下方法三就是利用栈来进行实现的,思路很好,很简练。进行next的时候,先是一直拿到左边的子树,直到null为止,这一步比较好思考一点,下一…...
df.groupby([pd.Grouper(freq=‘1M‘, key=‘Date‘), ‘Buyer‘]).sum()
df.groupby([pd.Grouper(freq1M, keyDate), Buyer]).sum() 用于根据特定的时间频率和买家(Buyer)对 DataFrame 进行分组,然后计算每个分组的总和。下面是对这行代码的逐步解释: df.groupby([...]):这个操作会根据传入的…...
LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 (4)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144881432 大模型的 HTTP 服务,通过网络接口,提供 AI 模型功能的服务,允许通过发送 HTTP 请求,交互…...
icp备案网站个人备案与企业备案的区别
个人备案和企业备案是在进行ICP备案时需要考虑的两种不同情况。个人备案是指个人拥有的网站进行备案,而企业备案则是指企业或组织名下的网站进行备案。这两者在备案过程中有一些明显的区别。 首先,个人备案相对来说流程较为简单。个人备案只需要提供个人…...
如何不修改模型参数来强化大语言模型 (LLM) 能力?
前言 如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 大语言模型 (Large Language Model, LLM, e.g. ChatGPT) 的参数量少则几十亿,多则上千亿,对其的训…...
AF3 AtomAttentionEncoder类的init_pair_repr方法解读
AlphaFold3 的 AtomAttentionEncoder 类中,init_pair_repr 方法方法负责为原子之间的关系计算成对表示(pair representation),这是原子转变器(atom transformer)模型的关键组成部分,直接影响对蛋白质/分子相互作用的建模。 init_pair_repr源代码: def init_pair_repr(…...
DDoS攻击防御方案大全
1. 引言 随着互联网的迅猛发展,DDoS(分布式拒绝服务)攻击成为了网络安全领域中最常见且危害严重的攻击方式之一。DDoS攻击通过向目标网络或服务发送大量流量,导致服务器过载,最终使其无法响应合法用户的请求。本文将深…...
Vue中常用指令
一、内容渲染指令 1.v-text:操作纯文本,用于更新标签包含的文本,但是使用不灵活,无法拼接字符串,会覆盖文本,可以简写为{{}},{{}}支持逻辑运算。 用法示例: //把name对应的值渲染到…...
Servlet解析
概念 Servlet是运行在服务端的小程序(Server Applet),可以处理客户端的请求并返回响应,主要用于构建动态的Web应用,是SpringMVC的基础。 生命周期 加载和初始化 默认在客户端第一次请求加载到容器中,通过反射实例化…...
带虚继承的类对象模型
文章目录 1、代码2、 单个虚继承3、vbptr是什么4、虚继承的多继承 1、代码 #include<iostream> using namespace std;class Base { public:int ma; };class Derive1 :virtual public Base { public:int mb; };class Derive2 :public Base { public:int mc; };class Deri…...
深度学习中的离群值
文章目录 深度学习中有离群值吗?深度学习中的离群值来源:处理离群值的策略:1. 数据预处理阶段:2. 数据增强和鲁棒模型:3. 模型训练阶段:4. 异常检测集成模型: 如何处理对抗样本?总结…...
如何利用Logo设计免费生成器创建专业级Logo
在当今的商业世界中,一个好的Logo是品牌身份的象征,它承载着公司的形象与理念。设计一个专业级的Logo不再需要花费大量的金钱和时间,尤其是当我们拥有Logo设计免费生成器这样的工具时。接下来,让我们深入探讨如何利用这些工具来创…...
Mysql SQL 超实用的7个日期算术运算实例(10k)
文章目录 前言1. 加上或减去若干天、若干月或若干年基本语法使用场景注意事项运用实例分析说明2. 确定两个日期相差多少天基本语法使用场景注意事项运用实例分析说明3. 确定两个日期之间有多少个工作日基本语法使用场景注意事项运用实例分析说明4. 确定两个日期相隔多少个月或多…...
运算指令(PLC)
加 ADD 减 SUB 乘 MUL 除 DIV 浮点运算 整数运算...
「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏
本篇教程将带你实现一个数字填色小游戏,通过简单的交互逻辑,学习如何使用鸿蒙开发组件创建趣味性强的应用。 关键词 UI互动应用数字填色动态交互逻辑判断游戏开发 一、功能说明 数字填色小游戏包含以下功能: 数字选择:用户点击…...
机器学习经典算法——逻辑回归
目录 算法介绍 算法概念 算法的优缺点 LogisticRegression()函数理解 环境准备 算法练习 算法介绍 算法概念 逻辑回归(Logistic Regression)是一种广泛应用于分类问题的机器学习算法。 它基于线性回归的思想,但通过引入一个逻辑函数&…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
