Simulare pgrep usando il grep normale

Come posso fare pgrep -U someUserName utilizzando solo ps e grep ? Non pgrep che pgrep sia impostato in un sistema?

Senso unico:

 ps -U someUserName -o pid,comm | awk '/someProcessName/{print $1}' 

Si noti che si possono get più ID di process come output se sono presenti più processi in esecuzione che corrispondono al nome utente e process.

L'output ps è realmente realizzata per la presentazione leggibile, non per essere elaborata in questo modo. Esistono altri strumenti per consentire un accesso a basso livello nell'elenco di processi in un formato più adatto allo scripting, come pgrep , pgrep Perl / Python / pgrep e così via.


Per farlo utilizzando solo ps e grep come si chiede, si potrebbe fare

 ps -U someUserName -o pid,comm | grep 'someProcessName' | grep -oE '^ *([^ ]*)' 

Ciò includerà lo spazio bianco, ma questo dovrebbe essere un problema nell'applicazione, ad esempio

 for i in $(ps -U someUserName -o pid,comm | grep 'someProcessName' | grep -oE '^ *([^ ]*)'); do kill $i done 

dovrebbe funzionare.

Ma come ho detto, il pkill è un modo più corretto e robusto e dovrebbe essere ampiamente disponibile.