
Was ist der Unterschied zwischen den unter ps
und aufgelisteten Prozessen ps -A
?
Antwort1
ohne -A
druckt ps nur die Prozesse aus, die zur aktuellen Sitzung gehören. Stellen Sie es sich als „absolut alles“ vor. In einem verwandten Hinweis -a
tut es dasselbe, beschränkt es aber auf den Sitzungsbesitzer (Benutzernamen).
Antwort2
Der GNU- ps
Befehl leidet an einer schweren Form multipler Persönlichkeitsstörung. Es ist also kein Wunder, dass seine Manualpage verwirrend ist. Vielleicht hilft ein Blick in die BSD-Handbücher. Schließlich ist diese FrageIstgetaggtUnix.
Der Betrieb von BSD ps
ist relativ unkompliziert, wenn man zwei Dinge beachtet:
- Die Auswahl der Prozesse zur Anzeige erfolgt über zwei grundlegende Filter. Diese Filter sindAnstandardmäßig und Befehlszeilenoptionen machen sieaus. Das schlichte, schmucklose Ambiente
ps
wird somit durch beides gefiltert. - Die BSD-Syntax hat eine lange Geschichte. Obwohl moderne BSDs
getopt
die Konvention verwenden, Optionen mit einem Minuszeichen zu versehen, sind die hier relevanten Optionen und das Verhalten weitgehend dieselben wie vor 30 Jahren.
Dieses Verhalten ist folgendes:
- Die
-a
(historischea
) Optionschaltet sich ausalle "Selektor"-Filterung.- Die verschiedenen anderen Befehlszeilenoptionen geben Selektoren an:
-U
Auswahl nach UID,-t
nach Steuerterminalnamen,-p
Auswahl nach Prozess-ID usw. Alle diese werden von umgangen-a
. - Wenn keine Selektoren explizit angegeben werden,Standardauswahlbesteht darin, nur Prozesse anzuzeigen, die mit derselben effektiven UID wie der Benutzer ausgeführt werden, der aufgerufen hat
ps
. Dieser Standardselektor ist der historische Filter, den diese Option deaktiviert.
- Die verschiedenen anderen Befehlszeilenoptionen geben Selektoren an:
- Die
-x
(historischex
) Optionschaltet sich ausdie Einschränkung, dassps
nur Prozesse angezeigt werden, die über ein steuerndes Terminal verfügen.
ps
Historisch gesehen hatte BSD keine A
Option. Moderne BSDs implementieren jedoch eine -A
Option, die auch als verwendet werden kann A
, um (ein gewisses Maß an) Kompatibilität mit der (späteren) Single UNIX Specification zu gewährleisten. -A
ist einfach dasselbe wie die Verwendung von -a
und -x
: Es schaltet beide Beschränkungen aus und lässt alle Prozesse ungefiltert übrig.
OpenBSD und NetBSD dokumentieren die -A
Option, im Fall von NetBSD explizit als -a -x
. Bei FreeBSD ist dies nicht der Fall, aber ein Kommentar im Quellcode besagt, dass sie als absichtlich undokumentierte SUSv5-Kompatibilitätsoption vorhanden ist.