我已经读过该ps
命令可以采用两种格式的标志:
现在,相同的标志可以用于两种格式,例如,执行以下命令的含义相同:
ps -x
ps x
Run Code Online (Sandbox Code Playgroud)
或者 Unix 格式有自己的一组标志,而 BSD 格式有一组完全不同的标志吗?
Ste*_*itt 10
该手册页回答您的问题:
不同类型的选项可以自由混合,但可能会出现冲突。由于与许多标准和
ps
实现ps
兼容,因此存在一些功能相同的同义选项。请注意,这
ps -aux
与 不同ps aux
。POSIX 和 UNIX 标准要求ps -aux
打印名为“x”的用户拥有的所有进程,以及打印-a
选项将选择的所有进程。如果名为“x”的用户不存在,则此 ps 可能会将命令解释为ps aux
代替并打印警告。此行为旨在帮助转换旧的脚本和习惯。它是脆弱的,可能会发生变化,因此不应依赖它。
标志不同,但可以组合。通常你会选择一个虽然,例如,无论是ps aux
或ps -ef
看到的所有进程,而不是一个混合的细节。
唯一的x
标志是BSD之一,所以ps x
与ps -x
产生相同的结果; 但这不适用于两种变体中定义的标志。
所有这些都特定于procps
和procps-ng
。的等价ps x
和ps -x
一个“第二次机会”,如果第一遍没有完全解析所有的参数被调用分析阶段的结果; 这在联机帮助页中没有记录,但在源代码的HACKING
文件中提到:
除非个性强制 BSD 解析,否则 parser.c 尝试将命令行解析为混合的 BSD+SysV+Gnu 混乱。失败时,尝试进行 BSD 解析。如果在尝试 SysV 解析后BSD 解析失败,则错误消息来自原始 SysV 解析。