Можно ли связать pgrep с kill?

Можно ли связать pgrep с kill?

Я заметил, что |используется для отправки результатов первой команды в другую. Я хотел бы завершить все процессы, которые соответствуют имени.
Вот что pgrep обычно делает:

$ pgrep name
5089
5105

И несколько аргументов, похоже, работают с kill:

sudo kill 5089 5105

Но это неверно:

pgrep name | kill

Так как же это сделать правильно?

решение1

Попробуй это:

pgrep name | xargs kill

Если вы используете pgrep name | kill, вывод pgrep nameбудет передан на stdin kill. Поскольку killне считывает аргументы из stdin, это не сработает.

Используя xargs, он будет строить аргументы для killиз stdin. Пример:

$ pgrep bash | xargs echo
5514 22298 23079

решение2

Это должно сработать:

pkill name

Я также предлагаю прочитать страницу руководства.

решение3

Чтобы ответить на общие, а не частные вопросы...

Каналы предназначены для передачи выходных данных из одной программы в видевходв другую программу.

Похоже, вы пытаетесь использовать вывод одной программы какаргументы командной строкив другую программу, которая отличается.

Для этого используйтезамена команды.

Например, если вы хотите запустить

sudo kill 5089 5105

И у вас есть команда pgrep name, которая выводит5089 5105

Вы складываете их вместе, как

sudo kill $(pgrep name)

Связанный контент