在我的 Linux 伺服器上,我以 root 身分執行 tomcat,當我運行時,ps aux
它會給出以下輸出。
root 25667 0.1 29.2 4574004 306980 ? Sl Apr27 33:57 /usr/local/java/bin/java -Djava.util.logging.config.file...
Thre只是父進程,但是當我運行時,htop
我可以看到所有其他子進程(哪些是線程?)。下面給出了幾行的範例輸出。
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
25668 root 15 0 4466M 299M 14208 S 0.0 29.3 0:01.23 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25669 root 18 0 4466M 299M 14208 S 0.0 29.3 0:54.84 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25670 root 15 0 4466M 299M 14208 S 0.0 29.3 0:00.25 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25671 root 15 0 4466M 299M 14208 S 0.0 29.3 0:00.54 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25672 root 18 0 4466M 299M 14208 S 0.0 29.3 0:00.00 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25673 root 15 0 4466M 299M 14208 S 0.0 29.3 0:17.96 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25674 root 15 0 4466M 299M 14208 S 0.0 29.3 0:20.01 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25675 root 19 0 4466M 299M 14208 S 0.0 29.3 0:00.00 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
所以我想用一個命令來取得子進程列表。我在設定檔中將 maxThreads 設為 200,並希望透過計算子執行緒來檢查當前執行緒數。
答案1
很容易做到:ps -eLf | grep java
可能需要調整(可以改進 grep 以獲得您正在尋找的內容)。
答案2
您可以啟動:
ps -o nlwp PID
(PID將是你的進程的pid)
nlwp = 輕量級進程數
答案3
如果您安裝了 JDK,即時監視它(以及各種堆大小)的一個非常有用的方法是jconsole
,它是一個 GUI 程式(如果您有 JDK javac
,您也應該有這個)。還有諸如jstat
“and jinfo
”之類的東西。為了從 jconsole 中受益,您可能需要啟用 JMX(對於遠端連線也可以這樣做)。您需要以執行要檢查的 JVM 的相同使用者身分執行這些工具。
如果您使用top
或htop
,則可以鍵入H
(大寫)來切換線程的顯示。值得一看的是各種頂級擊鍵。