Tengo un .jar
archivo que es conocido por el mal funcionamiento. Cuando ocurre un mal funcionamiento, solo ayuda un reinicio. Tengo una manera de detectar ese mal funcionamiento (leyendo el archivo de registro de dicho .jar
) Así que quiero escribir un script, que mata el proceso cada vez que ocurre el mal funcionamiento. El problema es:
confus@confusion:~$ ps -A
...
4438 ? 00:00:00 java
4439 ? 00:00:00 java
4443 ? 00:00:00 java
...
El nombre del proceso de todos los .jar
s en ejecución es naturalmente "java". ¿Cómo puedo averiguar cuál de estos procesos "java" es el que quiero matar, es decir, el que se está ejecutando foobar.jar
?
Respuestas:
Puede ejecutar el
lsof
comando, que enumera qué procesos tiene archivos abiertos, con su archivo jar dado como argumento. Un ejemplo de visualización de un archivo con menos:Para reutilizar fácilmente el pid en un script, puede ejecutarlo en modo conciso:
fuente
Usar
ps ax
ayudará.Mostrará el árbol de procesos en un estilo BSD que simplemente muestra más información.
Para encontrar su proceso particular solo tiene que buscar el nombre JAR.
ps ax | grep JARNAME
lo haré.fuente
Puede hacer esto nativo o si "lsof" no está instalado a través de / proc // fd Ejemplo:
fuente
Puede usar
jps
las-l
opciones que devolverán el archivo .jar usado con la ruta completa.fuente