jps
es una herramienta de Java, incluida en el JDK, que permite monitorear el estado de los procesos corriendo en una máquina virtual Java. Es una especie de ps
exclusivo para procesos Java.
jps
lista información de procesos Java sobre un host especificado como parámetro (opcional). Esta herramienta está limitada a reportar información acerca de las máquinas virtuales Java para las cuales tiene permisos de acceso.
Cuando se corre jps
sin parámetros, lista los procesos Java corriendo en el host local.
En la salida reporta el ID de máquina virtual (el cual típicamente coincide con el ID de proceso asignado por el sistema operativo) junto con el nombre corto de la clase de la aplicación o nombre de archivo .jar
:
[root@glassfish ~]# jps 8863 ASMain 11622 Jps
Si se utiliza la opción -m
, lista además los argumentos pasados al método principal:
[root@glassfish ~]# jps -m 8863 ASMain -domainname localdomain -asadmin-args --host,,,localhost,,,--port,,,1234,,,--secure=false,,,--terse=false,,,--echo=false,,,--interactive=false,,,start-domain,,,--verbose=false,,,--debug=false,,,--domaindir,,,/usr/local/glassfish/domains,,,localdomain -instancename server -verbose false -debug false -asadmin-classpath /usr/local/glassfish/glassfish/modules/admin-cli.jar -asadmin-classname com.sun.enterprise.admin.cli.AsadminMain -upgrade false -type DAS -domaindir /usr/local/glassfish/domains/localdomain -read-stdin true 11636 Jps -m
Con la opción -l
es posible listar el nombre completo de la clase de la aplicación o la ruta completa al archivo .jar
:
[root@glassfish ~]# jps -l 8863 com.sun.enterprise.glassfish.bootstrap.ASMain 11651 sun.tools.jps.Jps
Finalmente, la opción -v
permite obtener la lsita de argumentos pasados a la máquina virtual Java (JVM):
[root@glassfish ~]# jps -v 8863 ASMain -XX:+UnlockDiagnosticVMOptions -XX:+PrintClassHistogram -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256M -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:+PrintGCDateStamps -XX:PermSize=256M -XX:+PrintGCDetails -XX:MaxNewSize=512M -XX:NewSize=512M -XX:NewRatio=2 -XX:+UseCMSCompactAtFullCollection -Xmx3G -Xms3G -Xloggc:/home/glassfish/gc.log -javaagent:/usr/local/glassfish/lib/monitor/flashlight-agent.jar -Dfelix.fileinstall.disableConfigSave=false -Dproduct.name -Dsun.jnu.encoding=Cp1252 -Djava.awt.headless=true -Dfelix.fileinstall.poll=5000 -Djava.endorsed.dirs=/usr/local/glassfish/modules/endorsed:/usr/local/glassfish/lib/endorsed -Djava.net.preferIPv4Stack=true -Dfelix.fileinstall.bundles.startTransient=true -Djavax.net.ssl.trustStore=/usr/local/glassfish/domains/localdomain/c 11665 Jps -Dapplication.home=/usr/local/jdk1.7.0_51 -Xms8m
Tener en cuenta que esta aplicación no tiene soporte y puede no estar disponible en futuras versiones de Java. La documentación de Java versión 8 recomienda puntualmente no escribir scripts que hagan uso de la salida de esta herramienta ya que puede cambiar a futuro.
En sistemas operativos de la familia Unix, es posible utilizar en cambio el comando:
# ps aux | grep "[j]ava"
Este fue el último artículo del año 2016. Screw you guys, I'm going home!
Referencias
man jps
jps - Java Virtual Machine Process Status Tool