在/ proc中读取虚拟文件的内容

时间:2017-08-28 02:47:49

标签: linux bash grep

我需要在整个Linux文件系统中找到一个字符串,并使用grep在文件系统中查找此字符串的所有实例。我得到了两种类型的结果:一种来自我的/.bash_history,另一种来自proc目录。很明显,答案在于某种过程。

/proc结果看起来像这样:

Binary file /proc/12345/task/12345/cmdline matches

当我尝试导航到目录12345时,它不存在。我在redhat手册中读到/ proc文件系统中的文件往往是虚拟的。我猜测,当grep完成搜索时,该过程可能已经结束,我导航到相应的目录。 有没有办法在与grep相同的命令中打印进程的内容?在这种情况下,它返回两个结果。如何阅读每个结果的内容? 谢谢!

编辑:我使用grep -rs "*string_name*" /来查找字符串

1 个答案:

答案 0 :(得分:2)

  

我猜这个过程可能已经结束了

正确:这是您的grep进程匹配。

当您的grep正在运行时,命令行文件看起来像这样:

grep^@-r^@string^@/^@

其中“有趣”字符是NUL个分隔参数的字符。

  

有没有办法在与grep相同的命令中打印进程的内容?

man grep开始,在命令行中添加-a会打印二进制文件,就好像它是文本一样(grep认为cmdline是二进制文件,因为它包含嵌入式NUL s)。