web-dev-qa-db-fra.com

Lequel utiliser de ps ef ou ps -ef?

Je constate 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?

11
Niklas Rosencrantz

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.

Donc la 1ère méthode (ps ef) est de style BSD et la page de manuel continue avec

L'utilisation d'options de style BSD ajoutera l'état de 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 modifiera également la sélection de processus pour inclure les processus d'autres terminaux (TTY) que vous possédez; alternativement, cela peut être décrit en définissant la sélection comme étant 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, etc.

Donc, les deux sont des commandes valides mais ils ne montrent pas les mêmes informations.

17
Rinzwind

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.

Ainsi, ef utilise les options BSD e et f et -ef utilise les options Unix -e et -f. Celles-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).

Il est clair que vous ne sélectionnez pas tous les processus à l'aide des options ef, mais que vous 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.

Lequel devriez-vous utiliser? Que voulez-vous faire avec la sortie?

Voir aussi la section EXAMPLES (qui répertorie -ef de manière bien visible et n'utilise pas l'option BSD e):

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
18
muru