与服务器一起的日子

  • mysql
  • linux
  • 高可用
  • nginx
与服务器一起的日子
冰冷的机器也熄不灭火热的心
  1. 首页
  2. centos
  3. 正文

管道符|的实质

2020年6月22日 637点热度 0人点赞 0条评论

        管道符|大家都很熟悉,我们每次需要执行多重筛选命令的时候,总会用到|来传递上个命令的执行结果。当我开始探索管道符到底是什么,还是从一次内存崩溃谈起

在一天下午,我的一位师哥找到我,问我一个问题。

grep “xxx” file |less 和 less file|grep “xxx”有区别吗?

        我当时内心很吃惊,后来我了解到原来师哥用less命令看日志把服务器搞崩溃了,当时执行的命令是less file|grep “xxx”,我当时理解是管道符把日志全堵在内存里面了,导致内存爆满服务器宕机。后来看到了《介绍 Linux 中的管道和命名管道》,文章中提到

只要系统启动并运行或直到它被删除,命名管道就可以持续使用。它是一个遵循 FIFO(先进先出)机制的特殊文件。它可以像普通文件一样使用。也就是,你可以写入,从中读取,然后打开或关闭它。

我个人理解是“|”是一种在内存中的文件,体现了linux一切皆文件的哲学思想。正常运行状态是使用less的时候,先把日志写入到管道符内,然后执行grep进行过滤,但是写入管道符的时候,内存不够了,于是导致了内存爆满服务器宕机,所以我们一般是先grep过滤然后写入管道符,这样内存就可以装下我们想要的日志了,不会爆内存。

标签: pipe 管道符
最后更新:2020年6月22日

jhin

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2024 与服务器一起的日子. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang