У меня есть .jar
файл, который печально известен своими неисправностями. При возникновении неисправности помогает только перезапуск. У меня есть способ обнаружить эти неисправности (читая файл журнала .jar
). Поэтому я хочу написать сценарий, который убивает процесс при возникновении неисправности. Проблема в:
confus@confusion:~$ ps -A
...
4438 ? 00:00:00 java
4439 ? 00:00:00 java
4443 ? 00:00:00 java
...
Имя процесса всех запущенных .jar
s естественно "java". Как узнать, какой из этих «Java» -процессы это один я хочу убить, то есть один работает foobar.jar
?
Ответы:
Вы можете запустить
lsof
команду, которая перечисляет, какие процессы имеют открытые файлы, с вашим файлом JAR в качестве аргумента. Пример просмотра файла с меньшим:Чтобы легко использовать pid в скрипте, вы можете запустить его в кратком режиме:
источник
Использование
ps ax
поможет.Он отобразит дерево процессов в стиле BSD, который просто показывает больше информации.
Чтобы найти ваш конкретный процесс, вам просто нужно найти имя JAR.
ps ax | grep JARNAME
сделаю это.источник
Вы можете сделать это "родным" или, если "lsof" не установлен через / proc // fd. Пример:
источник
Вы можете использовать
jps
с-l
параметрами, которые будут возвращать файл .jar, используемый с полным путем.источник