He notado que |
se usa para enviar los resultados del primer comando al otro. Me gustaría eliminar todos los procesos que coincidan con un nombre.
Esto es lo que normalmente hace pgrep:
$ pgrep name
5089
5105
Y varios argumentos parecen funcionar con kill
:
sudo kill 5089 5105
Pero esto está mal:
pgrep name | kill
Entonces, ¿cómo hacerlo correctamente?
Respuesta1
Prueba esto:
pgrep name | xargs kill
Si usa pgrep name | kill
, la salida de pgrep name
se alimenta a la entrada estándar de kill
. Debido a que kill
no lee los argumentos de la entrada estándar, esto no funcionará.
Usando xargs
, construirá argumentos para kill
desde stdin. Ejemplo:
$ pgrep bash | xargs echo
5514 22298 23079
Respuesta2
Esto debería funcionar:
pkill name
También sugiero leer la página de manual.
Respuesta3
Para responder a lo general más que a lo específico...
Las tuberías sirven para pasar la salida de un programa comoaportea otro programa.
Parece que estás intentando utilizar la salida de un programa comoargumentos de línea de comandoa otro programa, que es diferente.
Para hacer eso, usesustitución de comando.
Por ejemplo si quieres ejecutar
sudo kill 5089 5105
Y tienes un comando pgrep name
que genera5089 5105
Los juntas como
sudo kill $(pgrep name)