Immagino tu stia cercando l'argomento -o:
-o formato:
format.format definito dall'utente è un singolo argomento sotto forma di un elenco separato da spazi o da virgole, che offre la possibilità di specificare singole colonne di output. Le parole chiave riconosciute sono descritte nella sezione STANDARDFORMAT SPECIFIERS di seguito. Le intestazioni possono essere rinominate (ps -o pid,ruser=RealUser -o comm=Command) come desiderato. Se tutte le intestazioni di colonna sono vuote (ps -o pid=-o comm=) la riga dell'intestazione non verrà emessa. La larghezza della colonna aumenterà secondo necessità per le intestazioni larghe; questo può essere usato per allargare colonne come WCHAN(ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Viene offerto anche il controllo esplicito della larghezza (ps opid,wchan:42,cmd). Il comportamento di ps -o pid=X,comm=Y varia con la personalità; l'output può essere una colonna denominata "X,comm=Y" o due colonne denominate "X" e "Y". Usa più -ooptions in caso di dubbio. Utilizzare la variabile di ambiente PS_FORMAT per specificare un'impostazione predefinita come desiderato; DefSysV e DefBSD sono macro che possono essere utilizzate per scegliere le colonne UNIX o BSD predefinite.
Quindi il comando che desideri sarebbe (Ubuntu):
ps -o uid,pid,cmd -ef|grep python
sotto OpenSolaris il comando è:
ps -o ruser,pid,comm -ef|grep python
Il più semplice sarebbe probabilmente:
$ ps o uid=,pid=,cmd= -C python
1000 26126 python
In questo modo ottieni tutto direttamente da ps
e non è necessario analizzare nulla.
Dall'ps
pagina man:
-o formato
Formato definito dall'utente. format è un singolo argomento sotto forma di un elenco separato da spazi vuoti o separato da virgole, che offre un modo per specificare singole colonne di output. [...] Le intestazioni possono essere rinominate (ps -o pid,ruser=RealUser -o comm=Command) come desiderato. Se tutte le intestazioni di colonna sono vuote (ps -o pid=-o comm=), la riga dell'intestazione non verrà emessa.
-C cmdlist
Select by command name. This selects the processes whose executable
name is given in cmdlist.
Il -C
funzionerà se stai eseguendo python
in modo interattivo, non se Python sta eseguendo uno script. In tal caso dovresti usare -C scriptname.py
invece.
ps -eo user,pid,cmd | grep [p]ython
Esempio:
$ ps -eo user,pid,cmd | grep [p]ython
root 1056 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root 1735 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
user 16613 /usr/bin/python3 /usr/share/system-config-printer/applet.py
Spiegazione:
-e
tutti i processi-o
formato definito dall'utenteuser,pid,cmd
Mostra utente, ID processo, colonne di comando
Nota: se usi -f
con -o
come altri hanno suggerito, potresti ricevere errori. Questo perché entrambi questi parametri controllano il formato di output e solo uno di essi dovrebbe essere utilizzato:
$ ps --help | grep -A 2 "output format"
*********** output format **********
-o,o user-defined -f full
-j,j job control s signal