Убить поток Java в Linux

#java #linux #java-threads #kill-process

#java #linux #java-потоки #kill-process (уничтожение процесса)

Вопрос:

На сервере Linux у меня есть одно Java-приложение… Иногда его поток зависал.. Как я могу найти их и убить этот конкретный поток Java. Я хочу убить тот поток Java, который занимает более 5 минут времени, чтобы получить результат Top -H в виде изображения

введите описание изображения здесь

Комментарии:

1. Не указывайте тип kill -9 <идентификатор процесса> Я хочу создать сценарий оболочки, который определит свой собственный идентификатор процесса.

2. Вы должны включить создание сценария оболочки как часть вопроса.

3. У меня это уже было здесь, и я удалил его, потому что я подумал: на самом деле это вам не поможет, но FWIW: pid сценария оболочки обычно равен $ $. ps и jps перечисляют процессы, и да, вы можете фильтровать (grep) по определенному имени и времени — также starttime и уничтожить его. Но это то, чего вы действительно хотите? Кстати, процессы, которые заблокированы ресурсом, не могут быть уничтожены.

4. Попробуйте kill -9 $(ps -eo comm,pid,etimes | awk '/^processname/ {if ($3 > 300) { print $2}}') . Не знаю, сможете ли вы найти processname для своего приложения. Здесь 300 — это время выполнения.

Ответ №1:

Вы не можете убить только поток процесса, если вы используете команду «kill -9 threadNo», вы убьете процесс.

Ответ №2:

Найдите java-процесс, используя приведенное ниже

$ ps -fea | grep -i java

Вот пример вывода

пользователь 2895 8191 0 09:28 pts/1 00:00:00 grep -i java
пользователь 4610 4607 1 Aug29? 01:40:00 /home/user/Software/java-7-sun/bin/java -Dosgi.requiredJavaVersion=1.6 -Xms40m -Xmx768m -XX:MaxPermSize=256m -jar /home/user/Software/springsource/sts-3.3.0.RELEASE//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

а затем завершить процесс

$ kill -9 4610

Поскольку вы хотите автоматизировать это через Shell, чтобы получить pid, выполните дальнейший поиск в тексте с вашим конкретным java-приложением (возможно, найдите местоположение приложения)

ps -ef | grep java | grep -v grep

Извлеките часть PID с помощью SED

Комментарии:

1. OP говорит, что я хочу убить этот поток java, который занимает более 5 минут времени