Как уничтожить все процессы кроме определенного

На моем локальном сервере работают много процессов Java, и в то же время я использую Eclipse. Теперь, когда я должен перезапустить свои процессы (я запускаю процессы через сценарий оболочки), перед каждым запуском, я должен уничтожить старые процессы через:

Метод 1:- kill -9 $Pid (для каждого процесса один за другим, который является трудоемким),

Метод 2:- killall -9 java (для всех процессов - легкий, но Eclipse будет уничтожен слишком излишне),

В случае Метода будут также уничтожены 2 Eclipse, который я никогда не хочу. Есть ли какой-либо выход из этого? Я держал пари, что должно быть :P

Править: Я использую человечность 15.04.

13
задан 24 July 2015 в 14:32

5 ответов

Дайте попытку этой команде:

ps ax | grep "java" | egrep -v "eclipse" | cut -b1-06 | xargs -t kill

это будет искать все процессы, содержащие Java, и затмение execluding затем уничтожают их

17
ответ дан 23 November 2019 в 03:13

Используя awk

ps ax | awk '/java/ && !/eclipse/ {system("kill "$1)}'

команда уничтожает весь java процессы, но не процесс eclipse.

12
ответ дан 23 November 2019 в 03:13

Как насчет:

pgrep -af 'java' | grep -Po '^[^ ]+(?!.*eclipse)' | xargs kill
  • pgrep -af 'java' поиски java в полной командной строке процессов и перечисляют их

  • grep -Po '^[^ ]+(?!.*eclipse)' взгляды среди искавших процессов и получают идентификаторы процесса процессов, которые не имеют eclipse в их полных командных строках

  • xargs kill, уничтожит процессы.

1
ответ дан 23 November 2019 в 03:13

jps -m | grep -v eclipse | awk '{print $1}' | xargs -t kill

Использование jps, чтобы удостовериться, что Вы ищете просто команды Java и не все команды, которые имеют Java в их пути.

0
ответ дан 23 November 2019 в 03:13
ps ax | grep "java" | egrep -v "eclipse" | cut -b1-06 | xargs -t kill
0
ответ дан 23 November 2019 в 03:13

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

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