Linux中用 grep查找特定进程,屏蔽grep进程本身(也就是不出现grep --color=auto)

日常操作linux 中,通常在使用 ps命令后 用管道连接 查询特定进程会显示 grep进程本身。

如下:

1 [[email protected] ~]# ps -ef|grep gs4
2 root      6284  5879  0 14:30 pts/0    00:00:00 grep --color=auto gs4
1 [[email protected] 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 [[email protected] ~]# ps -ef|grep gs4
2 root     16455  9998  0 16:19 pts/0    00:00:00 grep --color=auto gs4
3 [[email protected] ~]# ps -ef|grep gs4
4 root     16493  9998  0 16:19 pts/0    00:00:00 grep --color=auto gs4
5 [[email protected] ~]# ps -ef|grep gs4
6 root     16531  9998  0 16:19 pts/0    00:00:00 grep --color=auto gs4

解决的办法:

过滤掉grep进程本身的输出:

方法 一:在进程名 任何一个字母上添加 [ ]

1 [[email protected] ~]# ps -ef|grep gs4
2 root     13233  5879  0 14:59 pts/0    00:00:00 grep --color=auto gs4
3 [[email protected] ~]# ps -ef|grep g[s]4
4 [[email protected] ~]# 

浅析:

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进程本身。

小建议: 用 grep正则表达式 过滤出进程 有时不可靠,操作不好可能会出现,进程的误杀。

     建议用 pgrep命令 能正确过滤出 你想要的进程,不会误杀死其他进程。

方法二: 在进程 后面 +  grep -v grep

    -v 参数含义为不包括

[[email protected] ~]# ps -ef|grep g[s]4|grep -v grep
[[email protected] ~]# 

希望可以帮到你。

by不言谢。

原文地址:https://www.cnblogs.com/byx1024/p/12228735.html

时间: 2024-10-30 07:58:30

Linux中用 grep查找特定进程,屏蔽grep进程本身(也就是不出现grep --color=auto)的相关文章

linux之文件查找find grep详解,以及压缩归档

.find linux里的实时查找工具,通过制定路径完成文件查找. find[options]...[查找路径] [查找条件] [处理动作] 查找路径:查找的位置,默认是当前文件夹. 查找条件:指定查找的标准,文件名,大小,类型,日期等. 处理动作:对符合条件的文件做什么类型操作,默认是输出. 查找条件 根据文件名查找 -name 指定名称,可以使用正则 find /etc -name *.conf -maxdepth 2 -iname 忽略大小写 -links n 引用磁盘次数为n的文件 fi

Linux grep 查找字符所在文件(grep详解)

查找字符所在文件 grep -ir "S_ROLE"  ./* -i 不区分大小写 -r 查找字符出处 -a   --text   #不要忽略二进制的数据. -A<显示行数>   --after-context=<显示行数>   #除了显示符合范本样式的那一列之外,并显示该行之后的内容. -b   --byte-offset   #在显示符合样式的那一行之前,标示出该行第一个字符的编号. -B<显示行数>   --before-context=<

linux下查找进程及终止进程操作的相关命令

使用linux操作系统,难免遇到一些软件"卡壳"的问题,这时就需要使用linux下强大的kill命令来结束相关进程.这在linux系统下是极其容易的事情,你只需要kill xxx即可,这里xxx代表与此软件运行相关的进程PID号.首先,我们需要使用linux下另外一个命令ps查找与进程相关的PID号:ps aux | grep program_filter_word1)ps a 显示现行终端机下的所有程序,包括其他用户的程序.2)ps -A 显示所有程序.3)ps c 列出程序时,显示

linux查找特定类型的文件中是否包含特定字段

shell是个好东西,极大的方便了查询工作,之前遇到一个问题,查询包含有特定字段的特定文件,经过查询,命令如下: 1 find . -type f -name '*.cpp' print|xargs grep -r '#include' -l 上述命令的意思是查询包含有 '#include' 字符的 cpp文件,并给出文件名列表.具体需要熟悉find 和grep命令和各个参数的意思. 参考链接:http://blog.sina.com.cn/s/blog_691a84f301015khx.htm

ps 和 grep 查找消除 grep自身查找

用ps -def | grep查找进程很方便,最后一行总是会grep自己. $ ps -def | grep dragonfly-framework dean 5273 5272 0 15:23 pts/5 00:00:00 newlisp ./dragonfly-framework/newlisp-redirection.lsp -http -d 8080 -w . dean 5491 5229 0 15:37 pts/16 00:00:00 grep --color=auto dragonf

Linux 查找特定程序 whereis

Linux 查找特定程序 whereis whereis 命令主要用于查找程序文件,并提供这个文件的二进制可执行文件.源代码文件和使用手册存放位置. 1.查找命令程序 例如,查找 touch 命令 [[email protected] /]# whereis touch touch: /usr/bin/touch /usr/share/man/man1/touch.1.gz 执行效果如下: 如果只需要查找 touch 命令的二进制文件,可以使用 -b 选项实现: [[email protecte

Linux 查找指定名称的进程并显示进程详细信息

实际应用中可能有这样的场景:给定一个进程名称特征串,查找所有匹配该进程名称的进程的详细信息. 解决的办法是: (1) 先用pgrep [str] 命令进行模糊匹配,找到匹配该特征串的进程ID: (2) 其次根据进程ID显示指定的进程信息,ps --pid [pid]: (3) 因为查找出来的进程ID需要被作为参数传递给ps命令,故使用xargs命令,通过管道符号连接: (4) 最后显示进程详细信息,需要加上-u参数. 最终命令形如: pgrep Java | xargs ps -u --pid

Linux基础命令---查找进程id

pidof pidof可以查找指定名称的进程的pid,将结果送到标准输出.pidof有两种返回值:0,找到至少一个进程:1,没有找到进程.pidof实际上与killall5相同:程序根据调用它的名称进行操作. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora.   1.语法        pidof [选项]  name   2.选项列表 选项 说明 -s 一次只响应一个进程号 -c 只显示运行在root目录下的进程,这个选项只对ro

Linux 下进程操作,----进程的创建与控制

---恢复内容开始--- 进程是一个程序一次执行的过程,是操作系统动态执行的基本单元. 进程的概念主要有两点:第一,进程是一个实体.每个进程都有自己的虚拟地址空间,包括文本区.数据区.和堆栈区.文本区域存储处理器执行的代码:数据区存储变量和动态分配的内存:堆栈区存储着活动进程调用的指令和本地变量.第二,进程是一个"执行中的程序",它和程序有本质区别.程序是静态的,它是一些保存在磁盘上的指令的有序集合:而进程是一个动态的概念,它是一个运行着的程序,包含了进程的动态创建.调度和消亡的过程,