有谁能向我解释一下
ps -ef和
ps -auxwww举几个例子?
我只想知道他们之间的区别。我检查了一个提供信息的帖子,即ps -ef不会用很长的命令行列出进程,而ps -auxwww也会列出这些进程。
发布于 2021-06-08 12:22:18
ps是一个非常依赖于系统的命令.由于历史原因,现在和过去都有不同的味道。
ps -ef是获取信息的语法,在AT&T的Unix支持组( AT&T's Unix Support Group )的基础上,AT&T的Unix支持组(Unix Support Group)发布了fuller格式的清单,这是AT&T商业化Unix的一部分。或者SysV语法(如果您喜欢的话),尽管ps -ef在1980年已经在SysIII中了。
它由POSIX指定,但仅在XSI选项下指定(XSI选项对应于X/Open规范,该规范旨在为基于SysV的系统带来某种形式的标准化,现在已合并到POSIX中)。
最接近的POSIX等价物是ps -A -o user,pid,ppid,tty,time,args (缺少C (CPU)列)。
ps aux将是BSD语法,它是基于AT&T研究公司(贝尔实验室)开发的Unix的原始版本的学术系统。你没有在那里使用-。a适用于所有进程(不仅仅是与当前终端相关联的进程),u用于面向用户的输出包括附加信息,x用于还包括与任何终端无关的进程( ps首次出现的研究Unix v3中已经有-x )。wide的w是后来添加的。
通常在基于Linux的系统上发现的procps ps实现试图协调所有不同的(通常是不兼容的)语法、SysV语法、BSD语法,甚至更像来自HP/UX或AIX的语法,因此,当一个语法与另一个语法冲突时,支持大多数语法例外。
您的系统上的手册页将为您提供各种标志的所有细节。
ps -ef是否会截断命令行在很大程度上取决于系统、系统版本和实现以及ps的版本,以及输出是否到达终端。有些人支持-w,以使其更广泛。在一些系统上,包括较早版本的Linux,命令行被系统本身截断,所以如果它非常大,那么很难获得完整的命令行。
按照标准,您还可以选择指定所需的字段:
ps -A -o pid -o args例如,对于pid和命令行(从技术上讲,传递给进程执行的最后一个命令的参数列表-尽管在许多系统上,进程也可以任意更改)--A11进程。
ps -A -o pid= -o args=跳过标题。
注意,并非所有系统都支持相同的字段列表。
在脚本中,我建议坚持使用POSIX语法 (避免可选特性)。
对于基于某些条件(包括命令行)的进程搜索,使用pgrep (pkill来杀死它们)。这些不是标准的,但很常见,而且使用起来比处理ps的输出更可靠。
https://unix.stackexchange.com/questions/653359
复制相似问题