![`-f` 和 `-o` 在 `ps` 中如何交互?](https://linux22.com/image/151337/%60-f%60%20%E5%92%8C%20%60-o%60%20%E5%9C%A8%20%60ps%60%20%E4%B8%AD%E5%A6%82%E4%BD%95%E4%BA%A4%E4%BA%92%EF%BC%9F.png)
-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).
它们似乎是不相关的选项/参数。
但为什么
ps -f -o cmd
就像 一样ps f
,显示父子关系?ps -f -o ...
ps f
选择与?相同数量的进程$ ps f | wc -l 224 $ ps -f -o pid | wc -l 224
ps -f
选择有和没有-o
? 的不同流程$ ps -f | wc -l 5
-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
许多ps
Gnu/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
。