Tengo un .jararchivo 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 .jars 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
lsofcomando, 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 axayudará.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 JARNAMElo haré.fuente
Puede hacer esto nativo o si "lsof" no está instalado a través de / proc // fd Ejemplo:
fuente
Puede usar
jpslas-lopciones que devolverán el archivo .jar usado con la ruta completa.fuente