Ich sehe, dass es einen Unterschied in der Ausgabe zwischen ps ef
und gibt ps -ef
. Was ist dieser Unterschied, sind beide Befehle korrekt oder welcher wird bevorzugt?
Ich sehe, dass es einen Unterschied in der Ausgabe zwischen ps ef
und gibt ps -ef
. Was ist dieser Unterschied, sind beide Befehle korrekt oder welcher wird bevorzugt?
Antworten:
Siehe man ps
(die auf Ihrem System, online kann verschiedene Erklärungen haben).
This version of ps accepts several kinds of options:
1 UNIX options, which may be grouped and must be preceded by a dash.
2 BSD options, which may be grouped and must not be used with a dash.
3 GNU long options, which are preceded by two dashes.
Die erste Methode ( ps ef
) ist also im BSD-Stil und die Handbuchseite fährt fort
Durch die Verwendung von Optionen im BSD-Stil wird der Standardanzeige der Prozessstatus (stat = STAT) hinzugefügt und anstelle des ausführbaren Namens der Befehl args (args = COMMAND) angezeigt . Sie können dies mit der Umgebungsvariablen PS_FORMAT überschreiben. Durch die Verwendung von Optionen im BSD-Stil wird auch die Prozessauswahl geändert, um Prozesse auf anderen Terminals (TTYs) einzuschließen, deren Eigentümer Sie sind. Alternativ kann dies so beschrieben werden, dass die Auswahl als Satz aller Prozesse festgelegt wird, die gefiltert werden, um Prozesse auszuschließen, die anderen Benutzern gehören oder nicht auf einem Terminal. Diese Effekte werden nicht berücksichtigt, wenn Optionen im Folgenden als "identisch" beschrieben werden, sodass -M als identisch mit Z usw. betrachtet wird.
Beide sind also gültige Befehle, zeigen jedoch nicht die gleichen Informationen an.
man ps
sagt:
This version of ps accepts several kinds of options:
1 UNIX options, which may be grouped and must be preceded by a
dash.
2 BSD options, which may be grouped and must not be used with a
dash.
3 GNU long options, which are preceded by two dashes.
So ef
nutzt die BSD e
und f
Optionen, und -ef
verwendet den Unix -e
und -f
Optionen. Diese unterscheiden (Abschnitte SIMPLE PROCESS SELECTION
, OUTPUT FORMAT CONTROL
und OUTPUT MODIFIERS
jeweils):
-e Select all processes. Identical to -A.
-f Do full-format listing. This option can be combined with many
other UNIX-style options to add additional columns. It also
causes the command arguments to be printed. When used with
-L, the NLWP (number of threads) and LWP (thread ID) columns
will be added. See the c option, the format keyword args, and
the format keyword comm.
e Show the environment after the command.
f ASCII art process hierarchy (forest).
Natürlich wählen Sie nicht alle Prozesse mithilfe der ef
Optionen aus, sondern verwenden die Standardliste der Prozesse sowie einige zusätzliche Formatierungen:
By default, ps selects all processes with the same effective user ID
(euid=EUID) as the current user and associated with the same terminal
as the invoker. It displays the process ID (pid=PID), the terminal
associated with the process (tname=TTY), the cumulated CPU time in
[DD-]hh:mm:ss format (time=TIME), and the executable name (ucmd=CMD).
Output is unsorted by default.
The use of BSD-style options will add process state (stat=STAT) to
the default display and show the command args (args=COMMAND) instead
of the executable name. You can override this with the PS_FORMAT
environment variable. The use of BSD-style options will also change
the process selection to include processes on other terminals (TTYs)
that are owned by you; alternately, this may be described as setting
the selection to be the set of all processes filtered to exclude
processes owned by other users or not on a terminal.
Welches solltest du verwenden? Was möchten Sie mit der Ausgabe machen?
Siehe auch den EXAMPLES
Abschnitt (der -ef
ziemlich prominent aufgelistet ist und die BSD- e
Option überhaupt nicht verwendet ):
EXAMPLES
To see every process on the system using standard syntax:
ps -e
ps -ef
ps -eF
ps -ely
To see every process on the system using BSD syntax:
ps ax
ps axu
To print a process tree:
ps -ejH
ps axjf
ps -ef
==ps aux
afaik