web-dev-qa-db-ja.com

ps efとps -efのどちらを使用しますか?

ps efps -efの出力には違いがあるようです。その違いは何ですか、両方のコマンドは正しいですか、どちらが好ましいですか?

11

man psを参照してください(システム上のもの、オンラインでは異なる説明が可能です)。

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.

したがって、最初の方法(ps ef)はBSDスタイルであり、マニュアルページは

BSDスタイルのオプションの使用デフォルトのディスプレイにプロセス状態(stat = STAT)を追加し、実行可能ファイル名の代わりにコマンドargs(args = COMMAND)を表示します。 PS_FORMAT環境変数でこれを上書きできます。 BSDスタイルのオプションを使用すると、プロセスの選択も変更され、ユーザーが所有する他の端末(TTY)上のプロセスが含まれます。あるいは、これは、選択を、他のユーザーが所有するプロセスまたは端末上にないプロセスを除外するためにフィルター処理されたすべてのプロセスのセットに設定することとして説明できます。以下でオプションが「同一」であると説明されている場合、これらの効果は考慮されないため、-MはZなどと同一と見なされます。

したがって、両方とも有効なコマンドですが、同じ情報を表示していません。

17
Rinzwind

man ps 言います:

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.

したがって、efはBSD eおよびfオプションを使用し、-efはUnixの-eおよび-fオプションを使用します。これらは異なります(それぞれSIMPLE PROCESS SELECTIONOUTPUT FORMAT CONTROLOUTPUT MODIFIERSセクション):

   -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).

明らかに、efオプションを使用してすべてのプロセスを選択するのではなく、プロセスのデフォルトのリストといくつかの追加のフォーマットを使用しています。

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.

どちらを使うべきですか?出力をどうしますか?

また、 EXAMPLES セクション(-efをかなり目立つようにリストし、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