检查正在运行的进程 - Java

7

我想编写一个Java应用程序,部署在Unix服务器上。我需要检查正在运行的进程 - 即正在服务器上运行的进程。有人能给我展示一个例子/指点一下方向吗?


java.lang.ProcessBuilder + ps - Keith
2
你说的“检查正在运行的进程”是什么意思?你确切需要哪些有关进程的信息? - Dave L.
你尝试过在谷歌上搜索“如何检查Linux运行进程”吗? - Grammin
没问题,但我被告知需要有一个外部的.sh文件由Java调用,因为如果Java检查它,最终会耗尽内存。不确定为什么我的问题也被标记出来了。无论如何,只想检查一下特定应用程序是否在运行。 - user2675649
2个回答

20

如果您想查找正在运行的Java进程,可以使用

ps -ef | grep java

如果需要检查哪些端口正在使用中,

netstat -tupln


3

我发现 Java 提供了一些替代 ps aux | grep java 的方法,可以少打一些字:

jcmd

并且

jps -v

选项-v将显示传递给JVM的参数。
如果您收到进程信息不可用,可能是因为该进程正在使用OpenJDK运行。 如果您是root用户,并且该进程由非root用户启动,则可以使用以下命令查看详细信息(将<user>替换为用户名):
sudo -u <user> jps -v

jcmd 的另一个不错特性是你可以显示一个进程使用的 Java 版本(如果 ps aux | grep java 不能显示),我就是这样找到了下面这两个进程(用进程 id 替换 <pid>):

jcmd <pid> VM.version

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接