Veo que hay una diferencia en la salida entre ps ef
y ps -ef
. ¿Cuál es esa diferencia? ¿Ambos comandos son correctos o cuál es el preferido?
Veo que hay una diferencia en la salida entre ps ef
y ps -ef
. ¿Cuál es esa diferencia? ¿Ambos comandos son correctos o cuál es el preferido?
Respuestas:
Ver man ps
(el que está en su sistema, en línea puede tener diferentes explicaciones).
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.
Entonces, el primer método ( ps ef
) es estilo BSD y la página del manual continúa con
El uso de opciones de estilo BSD agregará el estado del proceso (stat = STAT) a la pantalla predeterminada y mostrará el comando args (args = COMMAND) en lugar del nombre ejecutable . Puede anular esto con la variable de entorno PS_FORMAT. El uso de opciones de estilo BSD también cambiará la selección de procesos para incluir procesos en otros terminales (TTY) que sean de su propiedad; alternativamente, esto puede describirse como establecer la selección para que sea el conjunto de todos los procesos filtrados para excluir procesos que son propiedad de otros usuarios o que no están en un terminal. Estos efectos no se consideran cuando las opciones se describen como "idénticas" a continuación, por lo que -M se considerará idéntico a Z y así sucesivamente.
Entonces, ambos son comandos válidos pero no muestran la misma información.
man ps
dice:
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.
Entonces, ef
usa el BSD e
y las f
opciones, y -ef
usa el Unix -e
y las -f
opciones. Estos son diferentes (secciones SIMPLE PROCESS SELECTION
, OUTPUT FORMAT CONTROL
y OUTPUT MODIFIERS
respectivamente):
-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).
Claramente, no está seleccionando todos los procesos utilizando las ef
opciones, sino que está utilizando la lista predeterminada de procesos, más algún formato adicional:
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.
¿Cuál deberías usar? ¿Qué quieres hacer con la salida?
Además, vea la EXAMPLES
sección (que enumera -ef
bastante prominentemente, y no utiliza la e
opción BSD en absoluto):
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