在Linux下执行 ps -ef |grep process_name时,无论process_name是否存在,总会存在一条带有 --color=auto process_name的进程。
这个进程是哪里来的?
(1)Linux 管道的概念:
管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
管道命令操作符是:‘|’,处理经由签名一个指令传出的正确输出消息。
管道的命令:选取命令:cut,grep;排序命令:sort,wc,uniq;双重数据量:tee;字符转换命令:tr,expand,col;切割命令:split;参数代换:xargs。
(2)grep:
分析一行信息,若当中存在需要的信息,则将该行输出,grep后还可以接正则表达式或通配符进行查询。
常用的选项与参数:
-a:将 binary 文件以 text 文件方式查找数据
-c:计算‘查找字符串’次数
-i:忽略大小写
-n:输出行号
-v:反向选择
-A:后面可跟数字,代表除了本行外,后续的 n 行也都列出来
-B: 后面可跟数字,代表除了本行外,前面的 n 行也都列出来
–color=auto: 关键字部分添加颜色
总的来说,grep本身就是一个命令,在执行 ps -ef | grep process_name 时,其实是起了一个 grep 的进程,所以你在这里看到了这个进程,它并不是 process_name 的进程。
grep --color=auto dockerd 其实就是grep带颜色渲染的别名。