L'output del comando ps di Linux può essere filtrato dall'utente E dal comando?


8

Ho bisogno del pid per un processo dato il suo proprietario e il suo comando. Posso filtrare un processo per utente con "ps -u xxx" e il suo comando da "ps -C yyy", ma quando provo "ps -u xxx -C yyy", vengono combinati usando la logica OR. Ho bisogno di logica E. Come posso ottenere questo?

Risposte:


11

Usa pgrep?

pgrep -U xxx yyy

restituisce solo il pid (o pid, se più di un processo corrisponde).



2

Utilizzi commper trovare i PID comuni a entrambe le condizioni:

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

Utilizzando bash, è possibile utilizzare la sostituzione del processo per evitare la necessità di file temporanei:

comm -1 -2 <(ps -u xxx | sort) <(ps -C yyy | sort)

Funziona, grazie mille. ... Ma non c'è modo più semplice (senza usare pgrep, dato che non è disponibile nel mio contesto)?
Guettli,

Cosa non è facile in questo?
GargantuChet

So cosa commfa. Ma lo uso solo una volta all'anno. Non è intuitivo per me. Immagino che tutti coloro che lo usano quotidianamente vedano questo diverso. I buoni motivi per cui esiste pgrep. Purtroppo pgrep non è disponibile nel mio contesto .... Ma ora è risolto. La radice del problema è (secondo il mio punto di vista), che ho bisogno di supportare il sistema operativo molto vecchio senza pgrep.
Guettli,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.