Я заметил, что |
используется для отправки результатов первой команды в другую. Я хотел бы завершить все процессы, которые соответствуют имени.
Вот что 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)