A saída do comando ps do Linux pode ser filtrada pelo comando user AND?

8

Eu preciso do pid para um processo dado seu dono e seu comando. Eu posso filtrar um processo por usuário com "ps -u xxx" e seu comando por "ps-yyy", mas quando eu tento "ps -u xxx-yyy", eles são combinados usando a lógica OR. Eu preciso de lógica. Como posso conseguir isso?

    
por Krumelur 03.11.2010 / 11:29

3 respostas

10

Use pgrep?

pgrep -U xxx yyy

retorna apenas o pid (ou pids, se mais de um processo corresponder).

    
por 03.11.2010 / 12:49
1

Use grep?

ps -u xxx | grep yyy | grep -v grep
    
por 03.11.2010 / 11:31
1

Você usa comm para encontrar PIDs comuns a ambas as condições:

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

Usando o bash, você pode usar a substituição de processos para evitar a necessidade de arquivos temporários:

comm -1 -2 <(ps -u xxx | sort) <(ps -C yyy | sort)
    
por 03.09.2015 / 20:16