
Conozco el argumento "-C" que puede filtrar según el comando.
Pero en mi escenario puedo tener algunos procesos con el mismo nombre de proceso y argumentos diferentes.
¿Cómo filtrar por estos argumentos?
(Sé que podría canalizar a grep más tarde, pero eso no es 100% exacto. Es decir, cuando un argumento puede contener otro argumento, como si quisiera filtrar por la "barra" del argumento en esta lista:
+---------+---------+-----------+
| Process | Command | Arguments |
+---------+---------+-----------+
| 23 | foo | bar |
| 48 | foo | barbaz |
+---------+---------+-----------+
PD: Supongo que la mayoría de las respuestas me recomendarán usar "pgrep" en lugar de "ps", pero me gustaría evitar esto si es posible.
Respuesta1
No creo que puedas lograr eso usando ps
solo. Tienes razón en que filtrar el uso grep
no es lo ideal, pero si estás dispuesto a dar pgrep
una oportunidad, puedes acercarte bastante a tus requisitos con:
ps -p $(pgrep -f bar -d',')
La -f
opción pgrep
busca en la línea de comando completa (en lugar de solo el nombre del proceso), mientras que la -d
opción especifica el delimitador que se usará para encadenar los pids.
Pasar la lista pid ps
limita la salida a aquellos que contienen la palabra clave en el comando completo (que incluye los argumentos).
En su ejemplo, donde desea hacer coincidir "foo bar" pero no "foo barbaz", busca una coincidencia exacta con:
ps -p $(pgrep -f "foo bar$" -d',') # Note the eol anchor '$'
Respuesta2
No creo que exista esa opción; al menos no existe en mi versión de ps
. Dudo que muchas ps
implementaciones tengan esa opción: el nombre del comando es bastante sencillo de definir, lo que definitivamente no es el caso cuando se trata de argumentos de comando.
En cualquier caso, la filosofía de Unix es encadenar muchas herramientas simples (por ejemplo, ps
y grep
) para realizar tareas más complejas. Se podría argumentar que incluso ps -C
lo están presionando; de hecho, creo que MacOS X ps
no tiene esa opción.
¿Qué estás tratando de hacer exactamente?Cuál es elcontextoa tu pregunta? Porque, según mi experiencia, en el 99% de los casos en los que las personas automatizan cosas analizando el resultado, ps
lo hacen de manera incorrecta...