xargs и kill не работают вместе, чтобы убить определенные процессы

62
7

У меня есть контейнер Docker с Red Hat 6.8, и у меня есть несколько процессов Java. На других компьютерах с той же ОС я использовал следующую команду для поиска и уничтожения всех процессов Java:

ps -ef | grep 'java' | grep -v 'grep' | awk '{print $2}' | xargs kill -9

Однако на этой машине это приводит к следующей ошибке:

xargs: kill: No such file or directory

Снятие "| xargs kill -9" действительно работает и показывает мне PID процессов, которые я хочу убить, но по какой-то причине команда не будет работать вместе.

У кого-нибудь есть идеи, почему?

спросил(а) 2021-01-19T14:04:38+03:00 2 месяца, 4 недели назад
1
Решение
76

Непосредственная проблема заключается в том, что xargs не могут найти команду kill. Это должно быть в вашем PATH, возможно, в /bin и/или /usr/bin. Вы не заметили бы, что он отсутствовал, когда вы запускаете команду kill непосредственно из оболочки, потому что большинство оболочек имеют встроенный kill.

Кроме того, я согласен с комментариями других пользователей об общей идее. Есть меньше хакерских способов сделать это (killall, pkill, все, что не связано с grep, полагающееся на удачу, чтобы избежать соответствия неправильной части вывода ps)...

ответил(а) 2021-01-19T14:04:38+03:00 2 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема