2011-06-09 24 views
9

Estoy ejecutando Tomcat 6.0.31 en Ubuntu 10.10 y utilizando tge Sun JDK (java-6-sun). Aunque tomcat se está ejecutando, su proceso no aparece cuando ejecuto jps (herramienta de estado de proceso de la máquina virtual de Java). El único resultado que veo es el pid para el proceso jps en sí. ¿Por qué el proceso Tomcat no aparece?jps no muestra el proceso de Tomcat

+1

¿Ha intentado ejecutar jps como root? Tal vez es un problema de permisos? – Pace

+0

Para las JVM más nuevas, el comentario de @ Pace apunta a la respuesta correcta: 'jps -l' muestra una lista de procesos diferente a la de' sudo jps -l'. Tengo que usar 'sudo' para ver a Tomcat cuando se ejecuta como root. – Lambart

Respuesta

14

Usted probablemente está ejecutando en Bug 7009828:

En Java 6 Update 23 y Java 6 Update 24, Java consideran la propiedad java.io.tmpdir la hora de decidir dónde colocar algunos archivos que se necesitaban para jps, jconsole y jvisulavm para detectar localmente ejecutando JVMs. Esto significa que todas las instancias de JVM que tenían esta propiedad del sistema definida en un valor distinto al predeterminado (/tmp) serían invisibles para estas herramientas.

Las instalaciones de Tomcat en particular establecen de forma predeterminada esta propiedad en sus instalaciones en la carpeta temp.

Por lo tanto: ya sea actualización a Java 6 Update 25 o posterior (donde el error se corrige) o empezar con jps-J-Djava.io.tmpdir=/path-to-tomcat-installation/temp.

2

¿Podría ser debido a los directorios /tmp/hsperfdata_$USER que están siendo eliminados por una tarea cron ejecutándose en su sistema? Ver http://www.semicomplete.com/blog/geekery/jps-shows-nothing-useful.html para más información.

+0

Este parece ser el problema para mí también ... los procesos de larga ejecución desaparecen de la salida 'jps', y el trabajo cron parece ser el culpable. ¿Por qué los diseñadores de Java no pensaron en esto cuando decidieron poner esos archivos de proceso en el directorio '/ tmp'? – ADTC

0

Compruebe sus argumentos vm si -XX:-UsePerfData presente.

Si es así, eliminarlo, y reiniciar JVM

0

Comprobar la propiedad del/tmp/hsperfdata_ * Guías de este modo:

ls -ld /tmp/hsperfdata_* 

Cada directorio será propiedad del usuario que posee que Java proceso. Si el proceso que le interesa no es propiedad suya, entonces los datos no serán accesibles. Sin embargo, si ejecuta jstatd como root, podrá acceder a todos los datos.

sudo jstatd <rest of options...> 
Cuestiones relacionadas