哪个使用ps ef或ps -ef?

我看到ps efps -ef之间的输出存在差异。 这有什么区别,这些命令是正确的还是首选的?

请参阅man ps (系统中的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相同,依此类推。

因此两者都是有效的命令,但它们没有显示相同的信息。

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 ef选项, -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