Supongo que estás buscando el argumento -o:
-o formato:
format.format definido por el usuario es un único argumento en forma de lista separada por comas o por espacios en blanco, que permite especificar columnas de salida individuales. Las palabras clave reconocidas se describen en la sección ESPECIFICADORES DE FORMATO ESTÁNDAR a continuación. Se puede cambiar el nombre de los encabezados (ps -o pid,ruser=RealUser -o comm=Command) según se desee. Si todos los encabezados de columna están vacíos (ps -o pid=-o comm=), la línea del encabezado no se mostrará. El ancho de columna aumentará según sea necesario para los encabezados anchos; esto puede usarse para ampliar columnas como WCHAN(ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). También se ofrece control de ancho explícito (ps opid,wchan:42,cmd). El comportamiento de ps -o pid=X,comm=Y varía según la personalidad; la salida puede ser una columna denominada "X,comm=Y" o dos columnas denominadas "X" e "Y". Utilice varias opciones cuando tenga dudas. Utilice la variable de entorno PS_FORMAT para especificar un valor predeterminado como desee; DefSysV y DefBSD son macros que se pueden usar para elegir las columnas UNIX o BSD predeterminadas.
Entonces, el comando que desea sería (Ubuntu):
ps -o uid,pid,cmd -ef|grep python
bajo OpenSolaris el comando es:
ps -o ruser,pid,comm -ef|grep python
El más simple probablemente sería:
$ ps o uid=,pid=,cmd= -C python
1000 26126 python
De esa forma obtienes todo directamente de ps
y no es necesario analizar nada.
Desde el ps
página man:
-o formato
Formato definido por el usuario. El formato es un único argumento en forma de lista separada por comas o espacios en blanco, que ofrece una forma de especificar columnas de salida individuales. [...] Los encabezados se pueden renombrar (ps -o pid,ruser=RealUser -o comm=Command) como se desee. Si todos los encabezados de las columnas están vacíos (ps -o pid=-o comm=), la línea del encabezado no aparecerá.
-C cmdlist
Select by command name. This selects the processes whose executable
name is given in cmdlist.
El -C
la opción funcionará si está ejecutando python
interactivamente, no si Python está ejecutando un script. En ese caso deberías usar -C scriptname.py
en su lugar.
ps -eo user,pid,cmd | grep [p]ython
Ejemplo:
$ 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
Explicación:
-e
todos los procesos-o
formato definido por el usuariouser,pid,cmd
Mostrar usuario, ID de proceso, columnas de comando
-f
con -o
como han sugerido otros, es posible que obtenga errores. Esto se debe a que ambos parámetros controlan el formato de salida y solo se debe usar uno de ellos:
$ ps --help | grep -A 2 "output format"
*********** output format **********
-o,o user-defined -f full
-j,j job control s signal