在 Ubuntu 系统中,将 JAR 包安装为服务

在 Ubuntu 系统中,将 JAR 包安装为服务可以通过 systemd 来实现。以下是详细的操作步骤:

准备工作

确保 JAR 文件路径和 Java 运行时环境已准备好。验证 Java 是否可用:

java -version

创建 systemd 服务文件

systemd 的服务文件通常位于 /etc/systemd/system/ 目录下。使用 sudo 权限创建一个新的服务文件:

sudo nano /etc/systemd/system/myapp.service

编辑服务文件并添加以下内容:

[Unit]
Description=My Java Application
After=network.target[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/data/server
ExecStart=/usr/bin/java -jar /data/server/myapp.jar
Restart=always
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"[Install]
WantedBy=multi-user.target

如果不清楚 JAVA_HOME 路径,可以使用以下命令查找:

readlink -f $(which java)

设置权限

确保服务文件的权限正确:

sudo chmod 644 /etc/systemd/system/myapp.service

重新加载 systemd 配置

每次修改或新增服务文件后,需要重新加载 systemd 配置:

sudo systemctl daemon-reload

启动服务

启动新创建的服务:

sudo systemctl start myapp

设置开机自启

如果希望服务在系统启动时自动运行,启用服务:

sudo systemctl enable myapp

检查服务状态

查看服务是否正常运行:

sudo systemctl status myapp

查看日志

如果服务启动失败,可以查看日志以排查问题:

journalctl -u myapp

查看实时日志:

sudo journalctl -u myapp.service -f

通过以上步骤,可以将 JAR 包成功安装为 Ubuntu 系统服务,并确保其能够正常运行和自动启动。

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

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

相关文章

电商项目-商品微服务-品牌管理微服务开发

一、功能分析 品牌管理微服务包括: (1)查询全部列表数据 (2)根据ID查询实体数据 (3)增加 (4)修改 (5)删除 (6)分页…

Spring Boot开发—— 整合Lucene构建轻量级毫秒级响应的全文检索引擎

文章目录 一、为什么选择 Lucene?轻量级搜索的底层密码二、核心原理:Lucene 的倒排索引2.1 倒排索引:速度之源2.2 段合并优化策略三、Spring Boot集成Lucene实战3.1 依赖配置3.2 实体与索引设计3.3 核心索引服务(含异常处理)3.4 使用示例(测试类)四、高级优化技巧4.1 索…

SpringBootDay1|面试题

目录 一、springboot框架 1、什么是springboot 2、Spring Boot的主要优点 3、springboot核心注解 4、定义banner(springboot的logo) 5、springboot配置文件 6、springboot 整合 jdbc 二、面试题 1)springmvc的作用 ​编辑 2&#x…

jQuery Ajax中dataType 和 content-type 参数的作用详解

jQuery Ajax中dataType与contentType参数解析 一、核心概念对比 参数作用对象数据类型默认值dataType响应数据预期接收的数据格式jQuery自动判断(根据响应头MIME类型)contentType请求数据发送数据的编码格式application/x-www-form-urlencoded 二、da…

几款常用的虚拟串口模拟器

几款常用的虚拟串口模拟器(Virtual Serial Port Emulator),适用于 Windows 系统,可用于开发和调试串口通信应用: 1. com0com (开源免费) 特点: 完全开源免费,无功能限制。 可创建多个虚拟串口…

LLM笔记(六)线性代数

公式速查表 1. 向量与矩阵:表示、转换与知识存储的基础 向量表示 (Vectors): 语义的载体 在LLM中,向量 x ∈ R d \mathbf{x}\in\mathbb{R}^d x∈Rd 是信息的基本单元,承载着丰富的语义信息: 词嵌入向量 (Word Embeddings)&am…

[特殊字符] Word2Vec:将词映射到高维空间,它到底能解决什么问题?

一、在 Word2Vec 之前,我们怎么处理语言? 在 Word2Vec 出现之前,自然语言处理更多是“工程方法”,例如字符串匹配、关键词提取、正则规则...。但这些表示通常缺乏语义,词与词之间看不出任何联系以及非常浅显。当然,技术没有好坏,只有适合的场景。例如: 关键词匹配非常…

栈和队列的模拟实现

栈和队列的模拟实现 容器适配器priority_queue(优先级队列)priority_queue的使用priority_queue的模拟实现: 仿函数什么叫仿函数?需要自己实现仿函数的情况: 栈的模拟实现队列的模拟实现deque(vector和list的缝合怪&am…

idea本地debug断点小技巧

idea本地debug断点小技巧 简单的设置断点条件 断点后,右键这个断点,可以在 condition 中填写能得出布尔的表达式 a 1 你如果写如下,表示先给他赋值,然后断住 a 2; true 断点后设置某个变量的值 在 debug 区域可以设置变量…

Oracle中如何解决FREE BUFFER WAITS

基于性能上的考虑,服务器进程在扫描LRU主列的同时,会将脏块移至LRU-W列,如果发现没有足够可用(可替换)的BUFFER CACHE,进程并不会无止尽地扫描整条LRU主列,而是在扫描到某个阀值(该阀…

Git命令使用全攻略:从创建分支到合并的完整流程

Git命令使用全攻略:从创建分支到合并的完整流程 引言一、初始化项目与基础配置1.1 克隆远程仓库1.2 查看当前分支状态 二、创建与管理分支2.1 从main分支创建新功能分支2.2 查看分支列表2.3 提交代码到新分支2.4 推送分支到GitHub 三、版本发布与标签管理3.1 创建轻…

MATLAB跳动的爱心

520,一个会动的心~~~ function particleHeart2 % author : slandarer% 所需匿名函数 col1Func(n) repmat([255,158,196]./255,[n,1])repmat([-39,-81,-56]./255,[n,1]).*rand([n,1]); col2Func(n) repmat([118,156,216]./255,[n,1])repmat([137,99,39].*.1./255,[n,…

Go的单测gomock及覆盖率命令

安装gomock: go get github.com/golang/mock/gomockgo get github.com/golang/mock/mockgen 使用 mockgen 生成 mock 代码: 参考 mockgen -sourceservice/user.go -destinationservice /mocks/mock_user_service.go -packagemocks go test -coverprofilecoverage.ou…

vue添加loading后修复页面渲染问题

问题:想要通过选择流程(1)后加载出角色信息(2) 选择后无法展示经过排查,再调用接口给角色数组赋值后,页面在接口调用完之前就已经渲染完成。接口是采用的异步加载解决:loadingRoles…

Python入门手册:Python简介,什么是Python

在当今数字化时代,编程语言犹如一把把神奇的钥匙,能够开启通往技术世界的大门。而Python,无疑是其中最闪耀的一颗明星。今天,就让我们一起走进Python的世界,从它的起源、应用领域以及优缺点三个方面,来全面…

用PyTorch在超大规模下训练深度学习模型:并行策略全解析

我猜咱们每个人肯定都累坏了,天天追着 LLM 研究社区跑,感觉每天都冒出个新的最牛模型,把之前的基准都给打破了呢。要是你好奇为啥创新速度能这么快,那主要就是研究人员能够在超大规模下训练和验证模型啦,这全靠并行计算…

提示工程(Prompt Engineering)应用技巧

Prompt(提示)就是用户与大模型交互输入的代称。即我们给大模型的输入称为 Prompt,而大模型返回的输出一般称为 Completion。 Prompt 需要清晰明确地表达需求,提供充足上下文,使语言模型能够准确理解我们的意图。更长、…

[原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取目录大小?

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…

Unity入门学习(四)3D数学(4)之四元数Quaternion

目录 一、什么是四元数 二、和欧拉角的关联以及为什么会出现四元数 三、四元数的基本组成 Unity中的表示: 四、四元数Quaternion这个类中具有的属性和方法 常用属性 核心方法 五、四元数之间的计算 1. 叉乘(组合旋转) 2. 点积&#…

活体检测接口全面评测:2025年活体检测选择指南

一、活体检测:数字化时代的身份验证基石 活体检测是一种通过分析人体生物特征动态变化来验证身份真实性的技术,其核心在于区分真实人体与伪造样本(如照片、视频、3D 面具等)。技术原理主要基于以下维度: 多模态数据采…