是否有一种类型的 ps 选项是首选?

是否有一种类型的 ps 选项是首选?

GNUps支持 BSD 样式选项、UNIX 样式选项和 GNU 长选项。使用其中一种类型(在脚本和命令行中)是否优于其他类型?

我从手册页中得到的印象是选项样式的功能并不完全重叠。

答案1

一般来说,只需使用能提供您想要的结果的选项集。

为了(其他人的)理智和可移植性,我建议坚持使用 BSD 风格或 SysV 风格的参数——大多数现代系统都接受这两种参数集,这样当你编写的用于解决 Linux 问题的脚本被放到一个不理解 GNU 风格长选项的系统上时,它仍然可以工作(全世界都是不是Linux 机器)。

答案2

使用这些类型之一(在脚本和命令行中)是否优于其他类型?

这在很大程度上取决于脚本应在哪些目标平台上运行。如果您的脚本只能在 Linux 上运行,则使用 GNU 样式选项;如果它们还应在 *BSD 上使用,则使用 BSD 样式选项;最后但并非最不重要的是,如果它们应在各种 unixoid 系统(例如 Solaris)上运行,则使用 UNIX 样式选项。

答案3

任何POSIX说。我不太了解这方面的内容,但我猜使用 ps 的脚本无论如何都不太容易移植。

答案4

我认为您会发现 POSIX 或 SVR4 选项更加常见。

我通常会解析 uname 输出,并根据该值选择正确的 /bin/ps、/usr/bin/ps 和参数。在不支持的平台上,我只是退出,我不会猜测。在 Linux 上,我将 $PS_PERSONALITY 设置为“posix”,并取消设置 $I_WANT_A_BROKEN_PS,以防用户出于某种原因设置了该设置。这只是一种防御措施。

GNU getopt_long() 样式仅在 Linux 上有用,即使您想要这样做,人们也更熟悉短选项。

相关内容