在 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.pswp.cn/news/906395.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906395.shtml
英文地址,請注明出處:http://en.pswp.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 面具等)。技術原理主要基于以下維度: 多模態數據采…