ps -ef 和 ps -auxwww 之间的区别?

ps -ef 和 ps -auxwww 之间的区别?

谁能向我解释一下有什么区别

ps -ef

ps -auxwww

有一些例子吗?


我只是想知道它们之间的区别。我查过一个邮政提供信息,即ps -ef不会列出具有很长命令行的进程,同时ps -auxwww也会列出这些进程。

答案1

ps是一个非常依赖系统的命令。由于历史原因,存在并且一直存在不同的口味。

ps -efe是在 Unices 上以uller 格式列表获取信息的语法f,该列表基于 AT&T 的 Unix 支持组 (USG),该组是 AT&T 负责 Unix 商业化的部分。或者如果您愿意的话,也可以使用 SysV 语法,尽管ps -ef1980 年 SysIII 中就已经存在了。

它由 POSIX 指定,但仅在 XSI 选项下(对应于 X/Open 规范,该规范旨在为基于 SysV 的系统带来某种形式的标准化,现已合并到 POSIX 中)。

最接近的 POSIX 等效项是ps -A -o user,pid,ppid,tty,time,args(缺少C(CPU) 列)。

ps aux将是 BSD 语法,来自 more学术的基于 AT&T 研究(贝尔实验室)开发的 Unix 原始版本的系统。您没有在-那里使用。a全部进程(不仅仅是与当前终端关联的进程),u对于面向用户的输出包括附加信息,x还包括与任何终端无关的进程(Research Unix v3ps首次出现时已经有-x此功能)。w为了宽的很久以后才添加的。

通常在基于 Linux 的系统上发现的实现procps ps试图协调所有这些不同的(并且通常不兼容的)语法,SysV 语法、BSD 语法,甚至更像来自 HP/UX 或 AIX 的语法,因此支持大多数语法,但以下情况除外:一个与另一个发生冲突。

您系统上的手册页将为您提供各种标志含义的所有详细信息。

是否ps -ef截断命令行很大程度上取决于系统、系统版本、实现和版本ps以及输出是否发送到终端。一些支持-w使其更广泛。在某些系统(包括旧版本的 Linux)上,命令行会被系统本身截断,因此如果命令行非常大,您将无法轻松获取完整命令行。

标准情况下,您还可以选择指定所需的字段:

ps -A -o pid -o args

例如,仅对于All 进程的 pid 和命令行(从技术上讲,传递给进程执行的最后一个命令的参数列表,尽管在许多系统上,进程也可以任意更改它)。

ps -A -o pid= -o args=

跳过标题。

请注意,并非所有系统都支持相同的字段列表。

在脚本中,我建议坚持POSIX 语法(避免可选功能)。

要根据某些条件(包括命令行)搜索进程,请使用pgrep(pkill来终止它们)。这些不是标准的,但很常见,并且使用起来比处理ps.

相关内容