核心命令
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
常見陷阱與避坑