Vedo che c'è una differenza nell'output tra ps ef
e ps -ef
. Qual è la differenza, entrambi i comandi sono corretti o quale è preferito?
Vedo che c'è una differenza nell'output tra ps ef
e ps -ef
. Qual è la differenza, entrambi i comandi sono corretti o quale è preferito?
Risposte:
Vedi man ps
(quello sul tuo sistema, online può avere spiegazioni diverse).
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.
Quindi il primo metodo ( ps ef
) è in stile BSD e la pagina di manuale continua
L'uso di opzioni in stile BSD aggiungerà lo stato del processo (stat = STAT) alla visualizzazione predefinita e mostrerà il comando args (args = COMMAND) invece del nome dell'eseguibile . Puoi sovrascriverlo con la variabile d'ambiente PS_FORMAT. L'uso di opzioni in stile BSD modificherà anche la selezione dei processi per includere i processi su altri terminali (TTY) di proprietà dell'utente; in alternativa, ciò può essere descritto come impostazione della selezione come l'insieme di tutti i processi filtrati per escludere i processi di proprietà di altri utenti o meno su un terminale. Questi effetti non sono considerati quando le opzioni sono descritte come "identiche" di seguito, quindi -M sarà considerata identica a Z e così via.
Quindi entrambi sono comandi validi ma non mostrano le stesse informazioni.
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.
Quindi, ef
utilizza BSD e
e le f
opzioni e -ef
utilizza Unix -e
e le -f
opzioni. Questi sono diversi (sezioni SIMPLE PROCESS SELECTION
, OUTPUT FORMAT CONTROL
e OUTPUT MODIFIERS
rispettivamente):
-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).
Chiaramente, non stai selezionando tutti i processi utilizzando le ef
opzioni, ma stai utilizzando l'elenco predefinito dei processi, oltre ad alcune formattazioni aggiuntive:
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.
Quale dovresti usare? Cosa vuoi fare con l'output?
Inoltre, consulta la EXAMPLES
sezione (che elenca in modo -ef
piuttosto evidente e non utilizza affatto l' e
opzione 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