Ich vermute, Sie suchen nach dem Argument -o:
-o Format:
benutzerdefiniertes format.format ist ein einzelnes Argument in Form einer durch Leerzeichen oder Kommas getrennten Liste, die es ermöglicht, einzelne Ausgabespalten anzugeben. Die erkannten Schlüsselwörter werden im Abschnitt STANDARDFORMAT SPECIFIERS weiter unten beschrieben. Header können beliebig umbenannt werden (ps -o pid,ruser=RealUser -o comm=Command). Wenn alle Spaltenheader leer sind (ps -o pid=-o comm=), wird die Headerzeile nicht ausgegeben. Die Spaltenbreite erhöht sich nach Bedarf für breite Kopfzeilen; Dies kann verwendet werden, um Spalten wie WCHAN(ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm) zu verbreitern. Eine explizite Breitensteuerung (ps opid,wchan:42,cmd) wird ebenfalls angeboten. Das Verhalten von ps -o pid=X,comm=Y variiert mit der Persönlichkeit; Ausgabe kann eine Spalte namens "X,comm=Y" oder zwei Spalten namens "X" und "Y" sein. Verwenden Sie im Zweifelsfall mehrere -ooptions. Verwenden Sie die Umgebungsvariable PS_FORMAT, um bei Bedarf einen Standardwert anzugeben; DefSysV und DefBSD sind Makros, die verwendet werden können, um die standardmäßigen UNIX- oder BSD-Spalten auszuwählen.
Der gewünschte Befehl wäre also (Ubuntu):
ps -o uid,pid,cmd -ef|grep python
unter OpenSolaris lautet der Befehl:
ps -o ruser,pid,comm -ef|grep python
Das einfachste wäre wahrscheinlich:
$ ps o uid=,pid=,cmd= -C python
1000 26126 python
So erhalten Sie alles direkt von ps
und müssen nichts parsen.
Ab der ps
Manpage:
-o-Format
Benutzerdefiniertes Format. format ist ein einzelnes Argument in Form einer durch Leerzeichen oder Kommas getrennten Liste, die eine Möglichkeit bietet, einzelne Ausgabespalten anzugeben. [...] Header können beliebig umbenannt werden (ps -o pid,ruser=RealUser -o comm=Command). Wenn alle Spaltenüberschriften leer sind (ps -o pid=-o comm=), wird die Kopfzeile nicht ausgegeben.
-C cmdlist
Select by command name. This selects the processes whose executable
name is given in cmdlist.
Die -C
Option funktioniert, wenn Sie python
ausführen interaktiv, nicht wenn Python ein Skript ausführt. In diesem Fall sollten Sie -C scriptname.py
verwenden stattdessen.
ps -eo user,pid,cmd | grep [p]ython
Beispiel:
$ 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
Erklärung:
-e
alle Prozesse-o
benutzerdefiniertes Formatuser,pid,cmd
Benutzer, Prozess-ID, Befehlsspalten anzeigen
Hinweis: wenn Sie -f
verwenden mit -o
Wie andere vorgeschlagen haben, können Fehler auftreten. Dies liegt daran, dass diese beiden Parameter das Ausgabeformat steuern und nur einer von ihnen verwendet werden sollte:
$ ps --help | grep -A 2 "output format"
*********** output format **********
-o,o user-defined -f full
-j,j job control s signal