`-f` 和 `-o` 在 `ps` 中如何交互?

`-f` 和 `-o` 在 `ps` 中如何交互?

-f和怎样-o相互作用ps?据报道,他们不应该一起工作ps:输出修饰符与输出格式控制https://unix.stackexchange.com/a/446198/674,因为-f隐式指定字段,而-o允许用户指定字段。

man ps

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

f      ASCII art process hierarchy (forest).

它们似乎是不相关的选项/参数。

但为什么

  1. ps -f -o cmd就像 一样ps f,显示父子关系?
  2. ps -f -o ...ps f选择与?相同数量的进程

    $ ps f  | wc -l
    224
    $ ps -f -o pid |  wc -l
    224
    
  3. ps -f选择有和没有-o? 的不同流程

    $ ps -f  |  wc -l
    5
    
  4. -e这里好像不行?

    $ ps -e -f -o pid,ppid,comm |  wc -l
    224
    
    $ ps -e -f  |  wc -l
    414
    
    $ ps -e  -o pid,ppid,comm |  wc -l
    414
    

谢谢。

答案1

许多psGnu/Linux 至少与两个版本兼容ps:系统 V 和 BSD。有些选项来自其中一个,有些则来自另一个。

答案2

1. 和 2.:

是的,ps -f -o ...工作原理与 一样ps f,因为输出与流程层次结构的输出ps -f -o ...相同。ps f -o ...

例子:

ps -f -o user,pid,ppid,cmd
# is the same as
ps f -o user,pid,ppid,cmd

3.

ps -f似乎选择当前 shell (tty) 的所有进程,同时ps -f -o ...输出所有 tty 的进程。

例子:

ps -f
# selects the same processes of current tty as
ps -o user,pid,ppid,cmd,tty

# and... have a look at the tty value here
ps -f -o user,pid,ppid,cmd,tty

4.

是的,ps -ef似乎不适用于-o.您可以添加-H类似的层次结构ps -eH -o user,pid,ppid,cmd

相关内容