mac 和 linux 中的管道有什么根本区别吗?

mac 和 linux 中的管道有什么根本区别吗?
ps -e | grep bash

Linux 机器的示例输出:

1128 pts/14   00:00:00 bash
7491 pts/7    00:00:00 bash
12651 pts/14   00:00:00 bash
16145 pts/2    00:00:00 bash

来自 Mac 机器的示例输出:

58352 ttys000    0:00.09 login -pfl username /bin/bash -c exec -la bash /bin/bash
58353 ttys000    0:00.02 -bash
58390 ttys000    0:00.00 grep bash
20372 ttys005    0:00.06 login -pfl username /bin/bash -c exec -la bash /bin/bash
20373 ttys005    0:00.18 -bash

我的问题是为什么我们在第二种情况下看到“grep bash”,但在第一种情况下却看不到。

答案1

我现在无法重现 Mac OS X 的行为——它可能与操作系统中的进程调度细节有关,并且可能取决于处理器的时间和数量。

$ ps -e | grep bash
86880 ttys000    0:00.18 -bash
87718 ttys000    0:00.00 (bash)

通常,OS X 提供的主要是 BSD 命令行程序,而 Linux 发行版提供的是 GNU 变体。它们(大部分)是相同基本工具的兼容实现,但行为方式不同,通常具有不同的功能和参数。

鉴于所使用的程序(或在它们实际上相同的情况下的版本)有很大差异,我认为无法确定是什么原因导致它grep bash出现在您的系统中。

答案2

无论如何,观察到的差异与管道无关,而与有关ps。尝试将 ps 的输出重定向到文件并在那里搜索字符串。

相关内容