Как я могу узнать, какие файлы банки Java в настоящее время выполняет (и их PIDs)?

У меня есть a .jar файл, который известен за неправильное функционирование. Когда неправильное функционирование происходит, только перезапуск помогает. У меня есть способ обнаружить что неправильное функционирование (читающий файл журнала сказанных .jar) Таким образом, я хочу записать сценарий, который уничтожает процесс каждый раз, когда неправильное функционирование происходит. Проблема:

confus@confusion:~$ ps -A
...
4438 ?        00:00:00 java
4439 ?        00:00:00 java
4443 ?        00:00:00 java
...

Название процесса всего выполнения .jars является естественно "Java". Как я узнаю, какой из них "Java" - процессы являются тем, который я хочу уничтожить, т.е. выполнение того foobar.jar?

12
задан 15 August 2011 в 01:45

4 ответа

Можно работать lsof команда, которая перечисляет, какие процессы имеют открытые файлы с Вашим файлом банки, данным как аргумент. Пример, просматривающий файл с меньше:

egil@mutter:~$ lsof foo.c
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
less    18871 egil    4r   REG    8,2        0 53862540 foo.c
egil@mutter:~$

Для легкого многократного использования pid в сценарии Вы могли выполнить его в кратком режиме:

egil@mutter:~$ lsof -t foo.c
18871
10
ответ дан 23 November 2019 в 03:38

Используя ps ax поможет.

Это отобразит дерево процесса в стиле BSD, который просто показывает пути больше информации.

Для нахождения конкретного процесса, Вы просто имеете к grep для имени JAR. ps ax | grep JARNAME сделает это.

7
ответ дан 23 November 2019 в 03:38

Можно сделать этот собственный компонент или если "lsof" не установлен через/proc//fd Пример:

ps -ef|grep -w java
...
0c4       6917  6916  0 12:22 pts/7    00:00:00 java
...

ls -la /proc/6917/fd/
total 0
dr-x------ 2 0c4 svauser  0 Apr  2 12:23 .
dr-xr-xr-x 9 0c4 svauser  0 Apr  2 12:22 ..
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 0 -> /dev/pts/7
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 1 -> /dev/pts/7
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 2 -> /dev/pts/7
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 3 -> /opt/jdk1.8.0_191/jre/lib/rt.jar
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 4 -> /media/veracrypt1/Downloads/rr/testone.jar
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 5 -> /usr/share/java/gnu-getopt-1.0.14.jar
0
ответ дан 23 November 2019 в 03:38

Вы могли использовать jps с -l опции, которые возвратят .jar файл, используемый с полным путем.

- l Дисплеи полное название пакета основного класса приложения или полного пути называет в файл JAR приложения.

0
ответ дан 23 November 2019 в 03:38

Другие вопросы по тегам:

Похожие вопросы: