使用ps
时,$ ps -ef
和$ ps aux
似乎会给出相同的结果。 有什么区别?
我使用man ps
查看了手册,并获得了-e
和-f
的答案。但是我没有看到aux
- 我在/aux
下使用了man ps
搜索,但所有返回的都是与Max OS X Tiger相关的遗留通知,而我在macOS High Sierra上:
LEGACY DESCRIPTION 最大的变化是-u选项的解释,它现在显示属于指定用户名的进程。因此,“
ps -aux
”将失败(除非您想知道用户“x”)。然而,为方便起见,“ps aux
”仍然像Tiger一样。 (2005年3月20日)
那么,ps -ef
和ps aux
之间有什么区别?谢谢!
答案 0 :(得分:0)
有些选项相同,有些选项很接近。基本上for(size_t i = 0; i < array->length; i++)
{
if(strcmp((char*)array->data[i], some_string) == 0)
{
break;
}
}
是BSD样式,aux
是UNIX样式。从Linux手册页的第一部分开始(我假设OSX版本具有支持这两种类型的类似推理):
-ef
有关 This version of ps accepts several kinds of options:
1 UNIX options, which may be grouped and must be preceded by a dash.
2 BSD options, which may be grouped and must not be used with a dash.
3 GNU long options, which are preceded by two dashes.
和-ef
的详细信息,请参见手册页。我只是想澄清你可能会遇到的混淆,为什么他们都受到支持。
linux手册页还详细介绍了使用BSD选项时的一些一致差异。对于MacOS,这可能或不适用,因此我不会将其链接。
答案 1 :(得分:0)
有少量的命令行工具已经存在很长时间并经常使用,足以让他们开始失去和/或从未有过正式的-
标志。 tar
和ps
是两个很好的例子。
为什么要使用aux
与ef
? f
标志显示流程系列并将它们组合在一起。 aux
是一个悠久的传统,可以追溯到几十年前的系统,即使它是非标准的,它也可以工作。
从历史上看,macOS起源于BSD,因此ps
的参数更接近于FreeBSD。 GNU / Linux继承自AT&amp; T UNIX(System V),它具有以不同方式发展的类似工具。这两个世界之间有很多重叠,许多工具从一个跳到另一个,但是仍有一些历史原因可以解释为什么有些论点不同。
请记住ps
不是“bash
stuff”,它是一个系统命令,可以与bash
一起使用,也可以与其他shell一起使用,或者根本不使用shell直接打电话。尽量不要将像bash
这样的shell提供的命令行环境与作为操作系统一部分捆绑在一起的POSIX / UNIX工具(如ps
)混淆。