У меня есть a .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
команда, которая перечисляет, какие процессы имеют открытые файлы с Вашим файлом банки, данным как аргумент. Пример, просматривающий файл с меньше:
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
Используя ps ax
поможет.
Это отобразит дерево процесса в стиле BSD, который просто показывает пути больше информации.
Для нахождения конкретного процесса, Вы просто имеете к grep для имени JAR. ps ax | grep JARNAME
сделает это.
Можно сделать этот собственный компонент или если "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
Вы могли использовать jps
с -l
опции, которые возвратят .jar файл, используемый с полным путем.