jps & jcmd не показывали мне никаких результатов, когда я попробовал его, используя openjdk-1.8 на redhat linux. Но даже если он это сделал, он показывает только процессы под текущим пользователем, который не работает в моем случае. В конечном итоге я использовал ps | grep, но путь к классам для некоторых java-приложений может быть очень длинным, что делает результаты неразборчивыми, поэтому я использовал sed для его удаления. Это немного грубовато, но удаляет все, кроме: PID, User, java-class / jar, args.
ps -o pid,user,cmd -C java | sed -e 's/\([0-9]\+ *[^ ]*\) *[^ ]* *\([^$]*\)/\1 \2/' -e 's/-c[^ ]* [^ ]* \|-[^ ]* //g'
Результаты выглядят примерно так:
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
Альтернатива в Windows для перечисления всех процессов:
WMIC path win32_process where "Caption='java.exe'" get ProcessId,Commandline
Но для его разборчивости потребуется некоторый анализ.