linux,我啟動一個springboot項目, 用java -jar xxx.jar ,但是沒多久這個java進程就會自動關掉

當使用?java -jar xxx.jar &?啟動 Spring Boot 項目后進程自動關閉時,可能由多種原因導致。以下是常見排查步驟和解決方案:

一、查看日志定位原因

進程異常關閉通常會在控制臺或日志中留下線索,建議先獲取完整日志:

1.?查看終端輸出日志
  • ? 雖然使用?&?讓進程在后臺運行,但默認情況下,進程的?標準輸出(stdout)和標準錯誤(stderr)仍會輸出到當前終端
  • ? 若終端已關閉或清空,可通過以下方式重新關聯日志:
    tail?-f?nohup.out??#?若使用?nohup?啟動(見下文方案)
2.?查看 Spring Boot 應用日志
  • ? 確保應用日志配置正確(如?logback?或?log4j),檢查日志文件(默認可能在?./logs/?目錄下),查看是否有?啟動失敗依賴缺失端口占用數據庫連接失敗?等錯誤。

二、常見原因及解決方案

1. 應用自身啟動失敗
  • ??現象:進程啟動后立即退出,日志中出現?Application run failedError starting ApplicationContext?等錯誤。
  • ??排查方向
    • ??端口沖突:檢查端口是否被占用(如?8080):
      lsof?-i?:8080??#?查看端口占用
      若被占用,修改?application.properties?中的端口:
      server.port=8081
    • ??依賴缺失:檢查?pom.xml?或?build.gradle?中是否缺少必要依賴(如數據庫驅動、Spring Boot Starter),重新打包項目:
      mvn?clean?package?-DskipTests??#?Maven?打包
    • ??配置錯誤:檢查數據庫連接配置、文件路徑等是否正確,避免語法錯誤(如 YAML 格式縮進問題)。
2. 后臺進程被終端會話終止(掛起信號)
  • ??原因:使用?&?啟動的進程屬于當前終端會話的子進程,當終端關閉時,進程可能收到?SIGHUP(掛起)信號而終止。
  • ??解決方案:使用?nohup?或?disown?避免進程受終端影響:
    • ??方案一:用 nohup 啟動(將日志重定向到文件):
      nohup?java?-jar?xxx.jar?>?app.log?2>&1?&
      • ??nohup:忽略?SIGHUP?信號,防止終端關閉導致進程終止。
      • ??> app.log 2>&1:將 stdout 和 stderr 重定向到?app.log?文件。
    • ??方案二:啟動后用 disown 脫離會話
      java?-jar?xxx.jar?&
      disown?-h?$!??#?$!?表示最后一個后臺進程的?PID
3. OOM(內存不足)導致進程被系統終止
  • ??現象:日志中出現?java.lang.OutOfMemoryError,或系統日志(如?/var/log/syslog)中有?kill?進程的記錄(Out of memory: Kill process ... java)。
  • ??排查方法
    • ? 查看進程內存占用:
      ps?-eo?pid,ppid,%mem,%cpu,command?|?grep?java??#?查看?Java?進程內存
      jstat?-gcutil?<PID>?5000??#?監控?JVM?垃圾回收情況
    • ??解決方案
      • ? 減少 JVM 內存分配(如?-Xmx?參數):
        java?-Xmx1024m?-jar?xxx.jar?&??#?限制最大內存為?1GB
      • ? 優化應用代碼,避免內存泄漏(如大對象未釋放、集合類無限增長等)。
4. 進程被系統服務管理工具終止
  • ??若系統使用?systemd?管理服務(如 CentOS 7+、Ubuntu 16+),可能因服務配置不當導致進程重啟失敗。
  • ??排查方法
    • ? 若已將應用配置為?systemd?服務,檢查服務狀態:
      systemctl?status?springboot-app.service??#?假設服務名為?springboot-app
    • ? 若未配置服務,建議通過?systemd?管理進程(更健壯):
      1. 1. 創建服務文件:
        sudo?vi?/etc/systemd/system/springboot-app.service
      2. 2. 寫入以下內容(根據實際路徑修改):
        [Unit]
        Description=Spring?Boot?Application
        After=network.target[Service]
        User=root
        WorkingDirectory=/path/to/jar
        ExecStart=/usr/bin/java?-jar?xxx.jar
        Restart=always??????????#?自動重啟
        RestartSec=10???????????#?重啟間隔?10?秒
        SyslogIdentifier=springboot-app
        Environment=JAVA_OPTS=-Xmx1024m[Install]
        WantedBy=multi-user.target
      3. 3. 重載配置并啟動服務:
        sudo?systemctl?daemon-reload
        sudo?systemctl?start?springboot-app.service
        sudo?systemctl?enable?springboot-app.service??#?開機自啟
5. 資源限制(如 ulimit 限制)
  • ??原因:進程打開的文件句柄數、線程數超過系統限制,導致啟動失敗。
  • ??排查方法
    ulimit?-n??#?查看最大文件句柄數限制
    ulimit?-u??#?查看最大進程數限制
  • ??解決方案
    • ? 臨時調整(當前會話有效):
      ulimit?-n?65536??#?設置最大文件句柄數為?65536
    • ? 永久調整(需修改?/etc/security/limits.conf):
      *?soft?nofile?65536
      *?hard?nofile?65536

三、其他排查建議

  1. 1.?檢查 JAR 包完整性
    • ? 重新打包項目,確保 JAR 包未損壞(如?jar -tvf xxx.jar?查看內容是否完整)。
  2. 2.?測試純凈環境啟動
    • ? 在其他服務器或容器中啟動 JAR 包,排除當前服務器環境問題(如缺少系統依賴、權限不足等)。
  3. 3.?使用調試模式啟動
    java?-jar?-Xdebug?-Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n?xxx.jar?&
    通過調試工具連接端口(如 IntelliJ IDEA),查看進程掛起位置。

總結操作流程

  1. 1.?優先查看日志:通過終端輸出和應用日志定位具體錯誤。
  2. 2.?排除基礎問題:端口沖突、依賴缺失、配置錯誤。
  3. 3.?處理進程管理問題:使用?nohup?或?systemd?確保進程獨立運行。
  4. 4.?優化資源配置:調整 JVM 內存、系統資源限制。

根據日志中的具體錯誤信息,可進一步針對性解決問題。如果仍無法解決,建議提供完整的錯誤日志片段,以便更精準分析。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81051.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81051.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81051.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【獨家精簡】win11(24h2)清爽加速版

自作該版本的初心&#xff1a;隨著電腦性能的不斷提升&#xff0c;我們需要的更多的是沒有廣告&#xff0c;沒有推薦&#xff0c;沒有收集隱私的windows清爽版純凈系統 目前只會去制作windows系統專業版 1、去除Windows系統自帶的廣告新聞和推薦以及小組間和聊天功能。 2、精簡…

大二java第一面小廠(掛)

第一場&#xff1a; mybatis怎么防止數據轉義。 Hutool用的那些你常用的方法。 springboot的常用注解。 redis的多級緩存。 websocket怎么實現的多人協作編輯功能。 怎么實現的分庫分表。 mysql里面的各種操作&#xff0c;比如說分表怎么分&#xff0c;分頁查詢怎么用。 mybat…

OceanBase 的系統變量、配置項和用戶變量有何差異

在繼續閱讀本文之前&#xff0c;大家不妨先思考一下&#xff0c;數據庫中“系統變量”、“用戶變量”以及“配置項”這三者之間有何不同。如果感到有些模糊&#xff0c;那么本文將是您理清這些概念的好幫手。 很多用戶在使用OceanBase數據庫中的“配置項”和“系統變量”&#…

HTML-3.3 表格布局(學校官網簡易布局實例)

本系列可作為前端學習系列的筆記&#xff0c;代碼的運行環境是在HBuilder中&#xff0c;小編會將代碼復制下來&#xff0c;大家復制下來就可以練習了&#xff0c;方便大家學習。 系列文章目錄 HTML-1.1 文本字體樣式-字體設置、分割線、段落標簽、段內回車以及特殊符號 HTML…

如何在Edge瀏覽器里-安裝夢精靈AI提示詞管理工具

方案一&#xff08;應用中心安裝-推薦&#xff09;&#xff1a; 夢精靈 跨平臺AI提示詞管理工具 - Microsoft Edge AddonsMake Microsoft Edge your own with extensions that help you personalize the browser and be more productive.https://microsoftedge.microsoft.com…

GpuGeek 網絡加速:破解 AI 開發中的 “最后一公里” 瓶頸

摘要&#xff1a; 網絡延遲在AI開發中常被忽視&#xff0c;卻嚴重影響效率。GpuGeek通過技術創新&#xff0c;提供學術資源訪問和跨國數據交互的加速服務&#xff0c;助力開發者突破瓶頸。 目錄 一、引言&#xff1a;當算力不再稀缺&#xff0c;網絡瓶頸如何破局&#xff1f; …

校園社區小程序源碼解析

基于ThinkPHP、FastAdmin和UniApp開發的校園社區小程序源碼&#xff0c;旨在為校園內的學生和教職員工提供一個便捷的在線交流和服務平臺。 該小程序前端采用UniApp進行開發&#xff0c;具有良好的跨平臺兼容性&#xff0c;可以輕松發布到iOS和Android平臺。同時&#xff0c;后…

【Elasticsearch】flattened`類型在查詢嵌套數組時可能返回不準確結果的情況

好的&#xff01;為了更清楚地說明flattened類型在查詢嵌套數組時可能返回不準確結果的情況&#xff0c;我們可以通過一個具體的例子來展示。這個例子將展示如何在文檔中沒有完全匹配的嵌套對象時&#xff0c;flattened類型仍然可能返回該文檔。 示例文檔結構 假設你有以下文…

【目標檢測】RT-DETR

DETRs Beat YOLOs on Real-time Object Detection DETR在實時目標檢測任務中超越YOLO CVPR 2024 代碼地址 論文地址 0.論文摘要 YOLO系列因其在速度與精度間的均衡權衡&#xff0c;已成為實時目標檢測領域最受歡迎的框架。然而我們觀察到&#xff0c;非極大值抑制&#xf…

筆試強訓:Day5

一、笨小猴&#xff08;哈希數學&#xff09; 笨小猴_牛客題霸_牛客網 #include <iostream> #include <cmath> using namespace std; string s; bool isprime(int x){//試除法if(x2) return true;if(x<2||x%20) return false;int nsqrt(x);for(int i3;i<n;i…

掌握 LangChain 文檔處理核心:Document Loaders 與 Text Splitters 全解析

&#x1f407;明明跟你說過&#xff1a;個人主頁 &#x1f3c5;個人專欄&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目錄 一、引言 1、什么是LangChain 2、LangChain 在智能應用中的作用 …

開發工具指南

后端運維場用工具 工具文檔簡介1panel安裝指南運維管理面板網盤功能介紹網盤jenkins可以通過1panel 進行安裝jpom輔助安裝文檔后端項目發布工具

拷貝構造函數如果不加引用會怎樣?

博主介紹&#xff1a;程序喵大人 35- 資深C/C/Rust/Android/iOS客戶端開發10年大廠工作經驗嵌入式/人工智能/自動駕駛/音視頻/游戲開發入門級選手《C20高級編程》《C23高級編程》等多本書籍著譯者更多原創精品文章&#xff0c;首發gzh&#xff0c;見文末&#x1f447;&#x1…

UE5中制作動態數字Decal

在進行城市道路編輯時&#xff0c;經常需要繪制人行道、交通標志、停車線等路面元素。如果能夠使用具有動態修改功能的 Decal&#xff08;貼花&#xff09;&#xff0c;將大大提升編輯效率和靈活性。接下來講解如何制作。 1.首先準備一張包含所需元素的Texture&#xff0c;這里…

【Leetcode 每日一題】2900. 最長相鄰不相等子序列 I

問題背景 給你一個下標從 0 0 0 開始的字符串數組 w o r d s words words&#xff0c;和一個下標從 0 0 0 開始的 二進制 數組 g r o u p s groups groups&#xff0c;兩個數組長度都是 n n n。 你需要從 w o r d s words words 中選出 最長子序列。如果對于序列中的任何…

ProfibusDP主站轉ModbusRTU/TCP與橫河AXG電磁流量計通訊案例

ProfibusDP主站轉ModbusRTU/TCP與橫河AXG電磁流量計通訊案例 在當今數字化工業時代&#xff0c;智能儀表與控制系統的互聯互通成為提高生產效率和管理水平的關鍵。橫河AXG電磁流量計作為一款高性能的流量測量設備&#xff0c;在多個行業得到了廣泛應用。而Profibus DP作為一種…

微軟向現實低頭:悄悄延長Windows 10的Microsoft 365支持

快科技5月11日消息&#xff0c;Windows 10將在今年10月14日正式結束支持&#xff0c;此前微軟曾明確表示&#xff0c;Microsoft 365&#xff08;M365&#xff09;應用&#xff0c;如Outlook、Teams、OneDrive、Word、Excel等&#xff0c;也將隨之停止支持。 不過無法升級至Win…

【Spring AI】模型記憶持久化 + 自動加載記憶上下文

當我們利用大模型進行開發時&#xff0c;有時會因為項目重啟而丟失模型的記憶&#xff0c;會給開發的過程帶來不方便 接下來我將介紹如何將模型的記憶持久化&#xff0c;并保證在項目重啟后依然能能夠正常加載記憶上下文。 我們在配置ChatClient時&#xff0c;由于想要實現模…

(C語言)超市管理系統 (正式版)(指針)(數據結構)(清屏操作)(文件讀寫)

目錄 前言&#xff1a; 源代碼&#xff1a; product.h product.c fileio.h fileio.c main.c 代碼解析&#xff1a; 一、程序結構概述 二、product.c 函數詳解 1. 初始化商品列表 Init_products 2. 添加商品 add_product 3. 顯示商品 display_products 4. 修改商品 mo…

[服務器面板對比] 寶塔、aaPanel、Plesk、cPanel 哪家強?功能、性能與價格橫評 (2025)

對于很多 Linux 服務器用戶來說&#xff0c;直接面對黑乎乎的命令行界面 (CLI) 進行各種操作&#xff0c;雖然強大靈活&#xff0c;但也確實有一定的學習門檻和操作復雜度。特別是當你需要管理多個網站、數據庫、FTP賬戶&#xff0c;或者進行日常的軟件安裝、安全配置、日志查看…