像这样的命令ps
带有很多参数,特别是因为它们为用户提供了在 Unix 和 BSD 样式标志之间进行选择的选项。我希望你明白我的意思。
那么,当有这样一个选项可用时,我应该选择哪个选项才能在所有 linux 系统中实现最大兼容性?(例如,最大兼容性是优先事项之一)
我知道 Unix 风格很明显,但 BSD 命令出于某种原因包含更多可读信息(列标题,例如 CPU 列等)。当然,如果我错了,请纠正我,但这就是我的感受。
War*_*ung 17
几乎所有 Linux 都使用原始核心 Unix 命令的 GNU 版本ps
,如您所指出的,它支持 BSD 和 AT&T 样式选项。
由于您声明的目标只是 Linux 之间的兼容性,这意味着答案是“没关系”。
嵌入式和Linux的其它非常小的变体通常使用了BusyBox,而不是GNU工具,但在的情况下ps
,它确实没有影响到答案,因为BusyBox的版本也剥夺了它可以被称为既不是AT&Tish也不BSDish。
随着时间的推移,其他 Unixy 系统已经减少了ps
兼容性差异。Mac OS X——它间接地从 BSD Unix 派生出来,并且在一般情况下仍然与 BSD Unix 最相似——接受 AT&Tish 和 BSDishps
标志。
Solaris/OpenIndiana 也有这种行为,尽管这并不奇怪,因为它有 BSD 和 AT&T 的混合历史。
FreeBSD、OpenBSD 和 NetBSD 仍然完全遵循 BSD 风格。
Unix 盒子越老,它就越有可能只接受一种风格的标志。您可以像我们现在所做的一样在这样一个盒子上掩盖差异:安装 GNU 工具,如果它们还没有安装的话。
话虽如此,但仍有陷阱。ps
输出通常不应该在需要可移植的脚本中解析,例如,因为 Unixy 系统在哪些列可用、操作系统愿意让非 root 用户可见的数据量等方面有所不同。
(顺便说一句,请注意它是“BSD vs. AT&T”,而不是“BSD vs. Unix”。BSD Unix 仍然是 UNIX®。BSD Unix与最初的 AT&T 分支共享直接的开发历史。这种共享也是双向的:AT&T 及其继任者在其历史上的几个阶段将 BSD 创新带回国内。随着时间的推移,这种统一在一定程度上要归功于The Open Group及其前辈的努力。)