关于grep命令行的基本问题。我通过使用以下命令行找到了如何知道服务正在运行的方式:
ps -ef |grep -v grep | grep mongodb
我对第二个grep感到困惑:
|grep -v grep |
为什么我需要在“-v”之后使用“grep”???
该命令与此命令有什么不同?
ps -ef |grep mongodb
谢谢!
答案 0 :(得分:1)
当你grep "mongodb
“通过命令行时,你的命令也包含”mongodb“这个词。所以你会得到两个结果。哪个是有缺陷的结果。grep -v
是删除grep
用户输入的命令。
sh-4.1$ ps -ef |grep -v grep | grep mongodb
ps 17308 30074 0 06:05 pts/300 00:00:00 sh mongodb
VS
sh-4.1$ ps -ef |grep mongodb
ps 17308 30074 0 06:05 pts/300 00:00:00 sh mongodb
ps 17456 30074 0 06:05 pts/300 00:00:00 grep mongodb #<<<This also contains mongodb word. Hence result is flawed.
答案 1 :(得分:0)
-v选项告诉grep不要让任何匹配模式的东西,在这种情况下包含字符串“grep”的行。
所以如果省略grep -v grep
你的grep进程本身也会在管道中的第二个命令之后显示在输出中(也在第三个命令之后,因为grep进程本身包含单词“mongodb”)。