grepping ps 的输出,排除单词 grep

grepping output of ps, exclude the word grep

我正在使用 ps 查找为执行命令 "sleep 1234 &" 而创建的进程的 pid 我 grep 结果只匹配 "sleep 1234"。

ps -A -f | grep "sleep 1234"

然而,这也匹配命令 "grep sleep 1234" 本身,返回两行而不是一行。我如何为 grep 编写一个模式来排除单词 'grep' 本身?

谢谢

这是一个很常见的问题,最简单的解决方案是用方括号将 grep 模式中的字符括起来:

ps -A -f | grep "[s]leep 1234"

这现在将匹配 sleep 1234,但不匹配 [s]leep 1234(因为 sl 之间的文字 ]),以及 grep 行不再匹配。

grep在进程列表中的原因是管道是从右到左执行的,所以grep实际上在ps之前执行。