在我的 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...
只有一个父进程,但运行时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,实时监控 JDK(以及各种堆大小)的一个非常有用的方法是jconsole
,这是一个 GUI 程序(如果您有javac
,您也应该有这个)。还有jstat
和jinfo
等。要从 jconsole 中受益,您可能需要启用 JMX(远程连接也可以这样做)。您需要以运行要检查的 JVM 的同一用户身份运行这些工具。
如果您使用top
或htop
,则可以键入H
(大写) 来切换线程显示。值得一看的是各种顶级按键。