Я заметил, что |
используется для отправки результатов первой команды другой. Я хотел бы убить все процессы, которые соответствуют имени.
Вот что обычно делает pgrep:
$ pgrep name
5089
5105
И несколько аргументов, кажется, работают с kill
:
sudo kill 5089 5105
Но это неправильно
pgrep name | kill
Так как это сделать правильно?
pkill
, И если это не существует,kill $(pgrep ...)
.man pgrep
. Кнопка понижающего голоса говорит, что это когда вопрос не требует усилий по исследованию, а я не вижу ничего в вашем вопросе. Извините, если это показалось резким.Ответы:
Попробуй это:
Если вы используете
pgrep name | kill
, выходнойpgrep name
поток является подачей на стандартный выводkill
. Потомуkill
что не читает аргументы из стандартного ввода, так что это не будет работать.Используя
xargs
, он будет строить аргументы дляkill
из стандартного ввода. Пример:источник
Это должно работать:
Я также предлагаю прочитать справочную страницу.
источник
Чтобы ответить на общее, а не конкретное ...
Каналы предназначены для передачи вывода из одной программы в качестве ввода в другую программу.
Похоже, вы пытаетесь использовать вывод одной программы в качестве аргументов командной строки для другой программы, что отличается.
Для этого используйте подстановку команд .
Например, если вы хотите запустить
И у вас есть команда,
pgrep name
которая выводит5089 5105
Вы кладете их вместе, как
источник