Linux中用 grep查找特定进程,屏蔽grep进程本身(也就是不出现grep --color=auto)
2020年6月8日09:03:12更新 一些细节。
日常操作linux 中,通常在使用 ps命令后 用管道连接 查询特定进程会显示 grep进程本身。
如下:
1 [root@ecs-linux-byx ~]# ps -ef|grep gs4 2 root 6284 5879 0 14:30 pts/0 00:00:00 grep --color=auto gs4
1 [root@ecs-linux-byx gs4]# ps axu |grep gs4 2 root 2480 0.0 0.0 112728 972 pts/0 S+ 14:20 0:00 grep --color=auto gs4
上述查询,查询结果其实 都是没有 gs4这个进程。但是都显示了 grep进程的本身。
这样,对于初学者,可能并不太友好。有的人会认为这就是自己想要的 进程,结果用 kill -9 PID 时提示进程号不存在.......
如何判断时 grep进程本身? 看下方指令,你就会明白了。(橙色标注。)
进程号一直的变的那个进程是 grep进程本身,正常进程号 也就是PID不会变。
1 [root@ecs-linux-byx ~]# ps -ef|grep gs4 2 root 16455 9998 0 16:19 pts/0 00:00:00 grep --color=auto gs4 3 [root@ecs-linux-byx ~]# ps -ef|grep gs4 4 root 16493 9998 0 16:19 pts/0 00:00:00 grep --color=auto gs4 5 [root@ecs-linux-byx ~]# ps -ef|grep gs4 6 root 16531 9998 0 16:19 pts/0 00:00:00 grep --color=auto gs4
解决的办法:
过滤掉grep进程本身的输出:
方法 一:在进程名 任何一个字母上添加 [ ]
1 [root@ecs-linux-byx ~]# ps -ef|grep gs4 2 root 13233 5879 0 14:59 pts/0 00:00:00 grep --color=auto gs4 3 [root@ecs-linux-byx ~]# ps -ef|grep g[s]4 4 [root@ecs-linux-byx ~]#
浅析:
ps -ef |grep g[s]4 不会出现 grep进程本身。因为字母加上 [ ] 后,
此时 grep进程的参数是 grep --color=auto g[s]4;(注意看和上方代码框中深蓝标记的区别!!!)
而 grep g[s]4 正则表达式 匹配的是 'gs4' 这个字符串,
因此这个 grep g[s]4 正则表达式 并不能匹配到 ' g[s]4' 这个字符串。(也就是grep的进程)
所以自然不会出现grep进程本身。
[root@ecs-linux-byx ~]# ps -ef|pgrep Linux32 13533 15210 16388 17278 19453 23726
这时候, 还是 grep 命令比较香了。 如下:
所以说,具体用哪个,还是看个人的实际要求。
[root@ecs-t6-large-2-linux-20191006000012 ~]# ps -ef|grep Linux32 root 3160 18618 0 09:12 pts/8 00:00:00 grep --color=auto Linux32 root 13533 1 1 5月31 ? 02:38:30 ./magic_Linux32_gs3 /r ./ /e /gs/pack_data/lib_gs32.pak/gs/start_gs.o root 15210 1 0 5月24 ? 01:59:44 ./magic_Linux32 /r ./ /e /aaa/pack_data/lib_aaa32.pak/aaa/start_aaa.o root 16388 1 0 5月24 ? 01:32:38 ./magic_Linux32 /r ./ /e /dba/pack_data/lib_dba32.pak/dba/start_dba.o root 17278 1 0 5月24 ? 01:59:01 ./magic_Linux32 /r ./ /e /ccs/pack_data/lib_ccs32.pak/ccs/start_ccs.o root 19453 1 0 5月24 ? 02:52:29 ./magic_Linux32 /r ./ /e /csa/pack_data/lib_csa32.pak/csa/start_csa.o root 23726 1 1 6月06 ? 00:35:54 ./magic_Linux32_gs1 /r ./ /e /gs/pack_data/lib_gs32.pak/gs/start_gs.o
方法二: 在进程 后面 + grep -v grep
-v 参数含义为不包括
[root@ecs-linux-byx ~]# ps -ef|grep g[s]4|grep -v grep [root@ecs-linux-byx ~]#
希望可以帮到你。
by不言谢。
作者:静默虚空
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
by不言谢
不要和别人比,要赢得是自己。(ง •̀_•́)ง
本文来自博客园,作者:不言谢,转载请注明原文链接:https://www.cnblogs.com/byx1024/p/12228735.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步