¿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?

Respuestas:


11

Usar pgrep?

pgrep -U xxx yyy

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



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)

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.