Verwenden -o
Flagge.
Um nur Ihre eigenen Prozesse aufzulisten
ps -o command
Um alle Systemprozesse aufzulisten
ps -e -o command
Dies ist nicht die einzige Möglichkeit, Befehle aufzulisten. Sie können entweder mit Befehlszeilen-Flags oder nur als ausführbare Dateien gedruckt werden (was bei dieser command
Option der Fall ist).
Aus meinem Kommentar unten die Antwort:
befehl, args und cmd geben alle den vollen befehl. In der Tat sind Befehl und Befehl der man-Seite Aliase für args, einschließlich der - Flags. Das Komm gibt nur den Namen der ausführbaren Datei an. Aliase dazu sind ucmd und ucomm. Wenn ich AIX-Optionen falsch verstehe, können diese tatsächlich mit einem printf-ähnlichen Format angegeben werden,% a für args,% c für comm
Siehe man ps
für mehr Informationen zur Verwendung und die verfügbaren Formatoptionen
Ein programmatischer Ansatz wäre ein bisschen redundant, da er ps
uns bereits die Formatierungsoptionen bietet, dies kann jedoch durchgeführt werden awk
, was beim Umgang mit kolumnisierten Ausgaben sehr hilfreich ist.
ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
Beachten Sie jedoch, dass dieser Code abbricht, wenn der Benutzername Leerzeichen enthält, z john doe
. Dies kann durch Hinzufügen einer gsub
Funktion geändert werden, die Ihren Benutzernamen aus der ps
Liste entfernt. Wenn jedoch mehrere Benutzer am System angemeldet sind, ist es möglicherweise schwierig, alle Benutzernamen aus der Ausgabe zu löschen. Sie sehen also, dass die -o
Flagge viel bevorzugter ist.
Randnotiz, sudo
ist nicht erforderlich, um alle Vorgänge mit aufzulistenps
ps -eo command
&ps -eo comm
? Der einzige Unterschied , den ich fand , war incommand
der Ausgabe als solche war:[kthreadd]
während incomm
der Ausgabe als dies:kthreadd
. Bedeutet das etwas?comm
AIX-Format, wobeicommand
es sich um das Standard-GNU-Format handelt. AIX ist ein anderes * NIX-ähnliches System, daher kann diese Option aus Gründen der Kompatibilität verwendet werden. Ansonsten kein Unterschieddiff <(ps -eo comm) <(ps -eo command)
und da unten scheint es ein ziemliches Rasseln zu geben, kannst du das klarstellen?awk
Lösung bricht ab, wenn ein Benutzername Leerzeichen enthält ( hier ). auch vielleicht nurps aux | awk '{ for(i=11;i<=NF;i++) {printf $i" "}; printf "\n" }'
?command
,args
undcmd
alle geben das volle Kommando. In der Tat gibt die Manpage ancommand
undcmd
ist ein Alias fürargs
, wobei die-
Flags enthalten sind. Dercomm
gibt nur den Namen der ausführbaren Datei an. Aliase dazu sinducmd
unducomm
. Ich habe die AIX-Optionen falsch verstanden, diese können tatsächlich mit einem printf-ähnlichen Format angegeben werden,% a für args,% c für commEin allgemeinerer Weg. Wir bestimmen die Spalte des Befehls. Auf diese Weise spielt es keine Rolle, für welche Schalter verwendet werden
ps
.Beispielausgabe
Und worum geht es
pstree
?Beispielausgabe
quelle
Ich habe einen bescheidenen Weg gefunden, um dies von hier aus zu erreichen
sudo ps aux | rev | cut -d ' ' -f 1 | rev
rev
Durch Umkehren der Ausgabe vonps
und anschließendes Ausschneiden können Sie das erste Feld (welches das letzte ist!) eingrenzen und dann wieder umkehren ...arbeitete für mich.
quelle
ps aux
selbst wird als aufgeführtaux
.sudo
ist nicht notwendig fürps
und der Befehl schneidet viele der Befehle ab, daher ist es nicht sehr genau. Wenn Sie mit Spalten arbeiten möchten, verwenden Sieawk
es viel besser für diese Aufgabe. In der Tat wäre der genaue Befehlps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
awk
funktionieren sollte.sudo ps
und ich dachte,awk
wäre zu kompliziert für diese Aufgabe und kam mit rauscut
. Sollten Sie Ihre Antwort nicht mit diesem Code aktualisieren, damit das OP sie akzeptieren kann?ps
es ist einfach nicht blindlings analysierbar. Ich denke, die einzig sichere Methode ist hierps -e -o
.