Je vois qu'il y a une différence de sortie entre ps ef
et ps -ef
. Quelle est cette différence, les deux commandes sont-elles correctes ou lesquelles sont préférées?
Je vois qu'il y a une différence de sortie entre ps ef
et ps -ef
. Quelle est cette différence, les deux commandes sont-elles correctes ou lesquelles sont préférées?
Réponses:
Voir man ps
(celui sur votre système, en ligne peut avoir différentes explications).
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.
La 1ère méthode ( ps ef
) est donc de style BSD et la page de manuel continue avec
L'utilisation d'options de style BSD ajoutera l'état du processus (stat = STAT) à l'affichage par défaut et affichera la commande args (args = COMMAND) au lieu du nom de l'exécutable . Vous pouvez remplacer cela avec la variable d'environnement PS_FORMAT. L'utilisation d'options de style BSD changera également la sélection de processus pour inclure les processus sur d'autres terminaux (TTY) qui vous appartiennent; en variante, cela peut être décrit comme définissant la sélection pour être l'ensemble de tous les processus filtrés pour exclure les processus appartenant à d'autres utilisateurs ou non sur un terminal. Ces effets ne sont pas pris en compte lorsque les options sont décrites comme étant "identiques" ci-dessous, donc -M sera considéré comme identique à Z et ainsi de suite.
Les deux sont donc des commandes valides mais elles n'affichent pas les mêmes informations.
man ps
dit:
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.
Donc, ef
utilise le BSD e
et les f
options, et -ef
utilise l'Unix -e
et les -f
options. Ceux - ci sont différentes (sections SIMPLE PROCESS SELECTION
, OUTPUT FORMAT CONTROL
et OUTPUT MODIFIERS
respectivement):
-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).
De toute évidence, vous ne sélectionnez pas tous les processus à l'aide des ef
options, mais utilisez la liste par défaut des processus, ainsi qu'une mise en forme supplémentaire:
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.
Que devez-vous utiliser? Que voulez-vous faire avec la sortie?
Voir également la EXAMPLES
section (qui répertorie -ef
assez bien et n'utilise pas du tout l' e
option BSD ):
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