【问题标题】:linux: why if you pipe ps to grep, grep filter is in process output ? How does pipe works?linux:为什么如果将 ps 通过管道传递给 grep,grep 过滤器正在处理输出中?管道是如何工作的?
【发布时间】:2021-07-22 11:28:44
【问题描述】:

对于像ps aux |grep foobar 这样的典型命令,为什么会输出grep foobar 进程?

我在想ps aux 输出被传递给 grep 以通过 grep 参数中的模式过滤行但是在你执行ps aux grep 时仍然没有执行(至少这是我的假设,我是肯定错了),稍后执行。

那么管道是如何工作的呢?

【问题讨论】:

    标签: linux bash shell process


    【解决方案1】:

    原因很简单:

    1. 操作系统启动grep 进程(作为管道目标)。
    2. 操作系统启动ps发现grep正在运行
    3. OS 将ps 的标准输出连接到grep 的标准输入。

    【讨论】:

    • 为什么在ps之前启动grep进程?因为它会在命令运行时读取 ps 输出,所以它不是按顺序执行的?
    猜你喜欢
    • 1970-01-01
    • 2017-06-04
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 2011-05-16
    相关资源
    最近更新 更多