首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Linux Shell 一行命令檢測 Java 進程是否運行

     編輯:Java 相關知識

核心命令

ps -ef | grep java | grep "你的程序關鍵字"

參數詳解

  • ps -ef:顯示所有進程完整信息(UID、PID、PPID、C、STIME、TTY、TIME、CMD)。
  • grep java:過濾包含 "java" 的進程(JVM 進程命令行通常含 java)。
  • grep "關鍵字":二次過濾,匹配你的具體應用特徵(如主類名、jar 包名、配置文件路徑)。

實戰示例

# 檢測 Spring Boot 應用 (jar 包名)
ps -ef | grep java | grep "my-app-1.0.0.jar"

# 檢測 Tomcat (catalina.home)
ps -ef | grep java | grep "catalina.home"

# 檢測特定主類
ps -ef | grep java | grep "com.example.Application"

# 只顯示 PID (適合腳本判斷)
ps -ef | grep java | grep "my-app" | grep -v grep | awk '{print $2}'

進階:寫成可復用腳本

#!/bin/bash
# check-java.sh : 檢測 Java 進程
# 用法: ./check-java.sh "關鍵字"

KEYWORD=$1
if [ -z "$KEYWORD" ]; then
    echo "用法: $0 <進程關鍵字>"
    exit 1
fi

PIDS=$(ps -ef | grep java | grep "$KEYWORD" | grep -v grep | awk '{print $2}')

if [ -n "$PIDS" ]; then
    echo "進程運行中,PID: $PIDS"
    exit 0
else
    echo "進程未運行"
    exit 1
fi

常見陷阱與避坑

更優雅的替代方案

  • pgrep:pgrep -f "java.*my-app" (直接匹配完整命令行)。
  • systemd:生產環境建議註冊為服務,用 systemctl status my-app 管理。
  • 健康檢查端點:Spring Boot Actuator /actuator/health 比進程存活更有意義。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
問題原因解決
grep 到自己管道中 grep 進程也包含關鍵字添加 grep -v grep 排除
關鍵字太通用匹配到無關進程使用具體 jar 名、主類名、配置路徑
權限不足非 root 查看其他用戶進程受限使用同用戶運行、或 sudo
進程名被截斷ps 默認寬度限制用 ps -efww 或 ps aux