How can I list all Java processes in bash?
I need an command line. I know there is command ps
but I don't know what parameters I need to use.
相关问题
- Is shmid returned by shmget() unique across proces
- how to get running process information in java?
- JQ: Select when attribute value exists in a bash a
- Error building gcc 4.8.3 from source: libstdc++.so
- Why should we check WIFEXITED after wait in order
Starting from Java 7, the simplest way and less error prone is to simply use the command
jcmd
that is part of the JDK such that it will work the same way on all OS.Example:
More details about how to use
jcmd
.See also the
jcmd
UtilityIf I want simply list java processes, use:
When I want to know if a certain Java class is getting executed, I use the following command line:
From the OS side view, the process's command name is "java". The "ww" option widens the colum's maximum characters, so it's possible to grep the FQN of the related class.
jps & jcmd wasn't showing me any results when I tried it using using openjdk-1.8 on redhat linux. But even if it did it only shows processes under the current user which doesn't work in my case. Using the ps|grep is what I ended up doing but the class path for some java apps can be extremely long which makes results illegible so I used sed to remove it. This is a bit rough still but removes everything except: PID, User, java-class/jar, args.
Results look something like:
An alternative on windows to list all processes is:
But that is going to need some parsing to make it more legible.
This will return all the running java processes in linux environment. Then you can kill the process using the process ID.
Recent Java comes with Java Virtual Machine Process Status Tool "jps"
http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html
For example,