¿Se puede filtrar la salida del comando ps de Linux por el comando AND del usuario?

8

Necesito el pid para un proceso dado su propietario y su comando. Puedo filtrar un proceso por usuario con "ps -u xxx" y su comando por "ps -C aaa", pero cuando intento "ps -u xxx -C aaa", se combinan usando la lógica OR. Necesito Y lógica. ¿Cómo puedo lograr esto?

Krumelur
fuente

Respuestas:

11

Usar pgrep?

pgrep -U xxx yyy

devuelve solo el pid (o pids, si coincide más de un proceso).

Marius Gedminas
fuente
2

Usa grep?

ps -u xxx | grep yyy | grep -v grep
RedGrittyBrick
fuente
2

Usted usa commpara encontrar PID comunes a ambas condiciones:

ps -u xxx | sort > /tmp/ps-uxxx
ps -C yyy | sort > /tmp/ps-Cyyy
comm -1 -2 /tmp/ps-uxxx /tmp/ps-Cyyy

Con bash, puede usar la sustitución de procesos para evitar la necesidad de archivos temporales:

comm -1 -2 <(ps -u xxx | sort) <(ps -C yyy | sort)
GargantuChet
fuente
Funciona, muchas gracias. ... ¿Pero no hay una manera más fácil (sin usar pgrep, ya que esto no está disponible en mi contexto)?
guettli
¿Qué no es fácil sobre esto?
GargantuChet
Sé lo que commhace. Pero lo uso solo una vez al año. No es intuitivo para mí. Supongo que todos los que lo usan a diario lo ven diferente. Son buenas razones por las que existe pgrep. Desafortunadamente, pgrep no está disponible en mi contexto ... Pero ahora está resuelto. La raíz del problema es (según mi punto de vista), que necesito soportar el sistema operativo muy antiguo sin pgrep.
guettli