List of Java processes

LinuxBashUnixCommand Line

Linux Problem Overview


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.

Linux Solutions


Solution 1 - Linux

try:

ps aux | grep java

and see how you get on

Solution 2 - Linux

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,

[nsushkin@fulton support]$ jps -m
2120 Main --userdir /home/nsushkin/.netbeans/7.0 --branding nb
26546 charles.jar
17600 Jps -m

Solution 3 - Linux

jps -lV

is most useful. Prints just pid and qualified main class name:

2472 com.intellij.idea.Main
11111 sun.tools.jps.Jps
9030 play.server.Server
2752 org.jetbrains.idea.maven.server.RemoteMavenServer

Solution 4 - Linux

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:

> jcmd
5485 sun.tools.jcmd.JCmd
2125 MyProgram

> jcmd allows to send diagnostic command requests to a running Java > Virtual Machine (JVM).

More details about how to use jcmd.

See also the jcmd Utility

Solution 5 - Linux

You can use single command pgrep as well (doesn't require you to use pipes and multiple commands):

pgrep -fl java

Solution 6 - Linux

For better output format check this command:

ps -fC java

Solution 7 - Linux

This will return all the running java processes in linux environment. Then you can kill the process using the process ID.

ps -e|grep java

Solution 8 - Linux

ps aux | grep java

or

$ ps -fea|grep -i java

Solution 9 - Linux

If I want simply list java processes, use:

ps -A | grep java

Solution 10 - Linux

pgrep -l java
ps -ef | grep java

Solution 11 - Linux

ps axuwww | grep java | grep -v grep

The above will

  • show you all processes with long lines (arg: www)
  • filter (grep) only lines what contain the word java, and
  • filter out the line "grep java" :)

(btw, this example is not the effective one, but simple to remember) ;)

you can pipe the above to another commands, for example:

ps axuwww | grep java | grep -v grep | sed '.....'  | while read something
do
    something_another $something
done

etc...

Solution 12 - Linux

When I want to know if a certain Java class is getting executed, I use the following command line:

ps ww -f -C java | grep "fully.qualified.name.of.class"

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.

Solution 13 - Linux

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.

ps -o pid,user,cmd -C java | sed -e 's/\([0-9]\+ *[^ ]*\) *[^ ]* *\([^$]*\)/\1 \2/' -e 's/-c[^ ]* [^ ]* \|-[^ ]* //g'

Results look something like:

  PID USER     CMD
11251 userb org.apache.zookeeper.server.quorum.QuorumPeerMain ../config/zookeeper.properties
19574 userb com.intellij.idea.Main
28807 root org.apache.nifi.bootstrap.RunNiFi run
28829 root org.apache.nifi.NiFi

An alternative on windows to list all processes is:

WMIC path win32_process where "Caption='java.exe'" get ProcessId,Commandline

But that is going to need some parsing to make it more legible.

Solution 14 - Linux

There's a lot of ways of doing this. You can use java.lang.ProcessBuilder and "pgrep" to get the process id (PID) with something like: pgrep -fl java | awk {'print $1'}. Or, if you are running under Linux, you can query the /proc directory.

I know, this seems horrible, and non portable, and even poorly implemented, I agree. But because Java actually runs in a VM, for some absurd reason that I can't really figure out after more then 15 years working the JDK, is why it isn't possible to see things outside the JVM space, it's really ridiculous with you think about it. You can do everything else, even fork and join child processes (those were an horrible way of multitasking when the world didn't know about threads or pthreads, what a hell! what's going in on with Java?! :).

This will give an immense discussion I know, but anyways, there's a very good API that I already used in my projects and it's stable enough (it's OSS so you still need to stress test every version you use before really trusting the API): https://github.com/jezhumble/javasysmon

JavaDoc: http://jezhumble.github.io/javasysmon/, search for the class com.jezhumble.javasysmon.OsProcess, she will do the trick. Hope it helped, best of luck.

Solution 15 - Linux

 ps -eaf | grep [j]ava

It's better since it will only show you the active processes not including this command that also got java string the [] does the trick

Solution 16 - Linux

I use this (good on Debian 8):

alias psj='ps --no-headers -ww -C java -o pid,user,start_time,command'

Solution 17 - Linux

The following commands will return only Java ProcessIDs. These commands are very useful especially whenever you want to feed another process by these return values (java PIDs).

sudo netstat -nlpt | awk '/java/ {print $7}' | tr '/java' ' '

sudo netstat -nlpt | awk '/java/ {print $7}' | sed 's/\/java/ /g'

But if you remove the latest pipe, you will be noticed these are java process

sudo netstat -nlpt | awk '/java/ {print $7}'

sudo netstat -nlpt | awk '/java/ {print $7}'

Solution 18 - Linux

To know the list of java running on the linux machine. ps -e | grep java

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJacek KoralikView Question on Stackoverflow
Solution 1 - LinuxRichView Answer on Stackoverflow
Solution 2 - LinuxNicholas SushkinView Answer on Stackoverflow
Solution 3 - Linuxtinned_sardineView Answer on Stackoverflow
Solution 4 - LinuxNicolas FilottoView Answer on Stackoverflow
Solution 5 - LinuxanubhavaView Answer on Stackoverflow
Solution 6 - LinuxMarcel BernicView Answer on Stackoverflow
Solution 7 - LinuxJude NiroshanView Answer on Stackoverflow
Solution 8 - LinuxShivendra Prakash ShuklaView Answer on Stackoverflow
Solution 9 - Linuxkrzysiek.steView Answer on Stackoverflow
Solution 10 - Linuxvaquar khanView Answer on Stackoverflow
Solution 11 - Linuxjm666View Answer on Stackoverflow
Solution 12 - LinuxairbjornView Answer on Stackoverflow
Solution 13 - LinuxMikeView Answer on Stackoverflow
Solution 14 - Linuxjbrios777View Answer on Stackoverflow
Solution 15 - LinuxIlya GazmanView Answer on Stackoverflow
Solution 16 - LinuxLaurent CailletteView Answer on Stackoverflow
Solution 17 - LinuxProgrammerView Answer on Stackoverflow
Solution 18 - Linuxkiran jallepalliView Answer on Stackoverflow