Chinaunix

标题: 我想用grep查询一个确定的进程,比如hald的怎么写 [打印本页]

作者: hosuk1208    时间: 2008-07-18 13:49
标题: 我想用grep查询一个确定的进程,比如hald的怎么写
[root@localhost local]# ps -ef|grep -w hald|grep -v grep
68        2161     1  0 13:39 ?        00:00:02 hald
root      2162  2161  0 13:39 ?        00:00:00 hald-runner
68        2168  2162  0 13:39 ?        00:00:00 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket
68        2173  2162  0 13:39 ?        00:00:00 hald-addon-keyboard: listening on /dev/input/event0
root      2185  2162  0 13:39 ?        00:00:05 hald-addon-storage: polling /dev/hdc
[root@localhost local]# ps -ef|grep -o hald|grep -v grep
hald
hald
hald
hald
hald
hald
[root@localhost local]# ps -ef|grep  hald|grep -v grep
68        2161     1  0 13:39 ?        00:00:02 hald
root      2162  2161  0 13:39 ?        00:00:00 hald-runner
68        2168  2162  0 13:39 ?        00:00:00 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket
68        2173  2162  0 13:39 ?        00:00:00 hald-addon-keyboard: listening on /dev/input/event0
root      2185  2162  0 13:39 ?        00:00:05 hald-addon-storage: polling /dev/hdc


我用grep -o或者-w参数都不行
怎么写才能只查询hald那个进程
谢谢
作者: ly5066113    时间: 2008-07-18 13:50
ps -ef | grep '[h]ald$'
作者: 寂寞烈火    时间: 2008-07-18 13:51
grep '\<hald\>'
作者: ly5066113    时间: 2008-07-18 13:54
原帖由 寂寞烈火 于 2008-7-18 13:51 发表
grep '\'


终于在火哥手里抢了个沙发,不容易啊!
作者: 寂寞烈火    时间: 2008-07-18 13:58
原帖由 ly5066113 于 2008-7-18 13:54 发表


终于在火哥手里抢了个沙发,不容易啊!


作者: eeeef    时间: 2008-07-18 14:14
原帖由 寂寞烈火 于 2008-7-18 13:51 发表
grep '\<hald\>'


这样不行。“-”貌似也算成组成单词的字符了,隔不开的
作者: 可可熊    时间: 2008-07-18 14:15
标题: 回复 #2 ly5066113 的帖子
ps -ef | grep '[h]ald$'
这个为什么要给h套个衣服呢?
ps -ef | grep 'hald$'
这样也行啊。

grep '\<hald\>'
这个不行。和-w一样了。
作者: ly5066113    时间: 2008-07-18 14:18
原帖由 可可熊 于 2008-7-18 14:15 发表
ps -ef | grep '[h]ald$'
这个为什么要给h套个衣服呢?
ps -ef | grep 'hald$'
这样也行啊。

grep '\'
这个不行。和-w一样了。


套个衣服就相当与多了一个 grep -v grep
作者: 寂寞烈火    时间: 2008-07-18 14:19
原帖由 eeeef 于 2008-7-18 14:14 发表


这样不行。“-”貌似也算成组成单词的字符了,隔不开的

直接grep 'hald$' 不可以么, 或
ps -ef|awk '/\<hald$/'
作者: eeeef    时间: 2008-07-18 14:20
原帖由 ly5066113 于 2008-7-18 14:18 发表


套个衣服就相当与多了一个 grep -v grep


果然如此,但不明白套个套子的原理<- -#口误>
作者: eeeef    时间: 2008-07-18 14:23
标题: 回复 #9 寂寞烈火 的帖子
我同意你的写法
可惜我不是LZ - -#
LZ说好那才叫真的好
作者: 可可熊    时间: 2008-07-18 14:23
标题: 回复 #8 ly5066113 的帖子
ps -ef | grep '[h]ald$'

呵呵,了解,
ps -ef | grep 'h[a]ld$'
套哪儿都行。

BTW:
[cocobear@cocobear test]$ ps -ef | grep pdf
cocobear 11443 25312  0 14:21 pts/2    00:00:00 grep pdf
root     15452     2  0 11:41 ?        00:00:01 [pdflush]
root     15503     2  0 11:41 ?        00:00:00 [pdflush]
[cocobear@cocobear test]$ ps -e | grep pdf
15452 ?        00:00:01 pdflush
15503 ?        00:00:00 pdflush

为什么加了-f参数后才会把ps本身那个进程grep出来。
作者: hosuk1208    时间: 2008-07-18 14:47
不理解....

[root@localhost local]# ps -ef | grep 'ls'
root     25862 25351  0 16:14 pts/0    00:00:00 grep ls
[root@localhost local]# ps -ef | grep 'ls$'
[root@localhost local]#


好象也可以不现实grep的进程

但还是加上套套
谢谢了
作者: welcome008    时间: 2008-07-18 14:49
原帖由 可可熊 于 2008-7-18 14:23 发表
ps -ef | grep '[h]ald$'

呵呵,了解,
ps -ef | grep 'h[a]ld$'
套哪儿都行。

BTW:
[cocobear@cocobear test]$ ps -ef | grep pdf
cocobear 11443 25312  0 14:21 pts/2    00:00:00 grep pdf
roo ...



加不加都有可能把grep本身进程整出来吧?

不过我还是没理解那个桃子是怎么样去掉grep进程本身的。
作者: ly5066113    时间: 2008-07-18 14:52
原帖由 hosuk1208 于 2008-7-18 14:47 发表
不理解....

[root@localhost local]# ps -ef | grep 'ls'
root     25862 25351  0 16:14 pts/0    00:00:00 grep ls
[root@localhost local]# ps -ef | grep 'ls$'
[root@localhost local]#


好象也 ...


恩,也可以。

[ 本帖最后由 ly5066113 于 2008-7-18 15:44 编辑 ]
作者: 可可熊    时间: 2008-07-18 14:52
标题: 回复 #14 welcome008 的帖子
加了套子grep就不认识hald了:[h]ald

[cocobear@cocobear test]$ echo "[h]ald" | grep hald
[cocobear@cocobear test]$
作者: 可可熊    时间: 2008-07-18 14:54
标题: 回复 #15 ly5066113 的帖子
不行吧,去掉套子,grep会把自己算进去了。
[cocobear@cocobear test]$ echo "hald$" | grep hald
hald$
作者: welcome008    时间: 2008-07-18 14:57
我就想知道为啥加了桃子能把grep本身的进程过滤掉,谁解答下,谢谢。
作者: ly5066113    时间: 2008-07-18 14:58
原帖由 可可熊 于 2008-7-18 14:54 发表
不行吧,去掉套子,grep会把自己算进去了。
[cocobear@cocobear test]$ echo "hald$" | grep hald
hald$


你的这个例子和进程没任何关系,只是在字串 hald$ 中查找字串 hald,结果当然找到。
作者: eeeef    时间: 2008-07-18 15:00
神秘的套子.......
解铃还需系铃人
ly5066113,出来澄清一下吧
作者: ly5066113    时间: 2008-07-18 15:06
原帖由 welcome008 于 2008-7-18 14:57 发表
我就想知道为啥加了桃子能把grep本身的进程过滤掉,谁解答下,谢谢。


http://bbs.chinaunix.net/viewthread.php?tid=480159

看看这个吧,我也是刚搜的。
开始我也只是知道这种用法而不知道原因,现在还在体会。
作者: ly5066113    时间: 2008-07-18 15:10
原帖由 eeeef 于 2008-7-18 15:00 发表
神秘的套子.......
解铃还需系铃人
ly5066113,出来澄清一下吧


现在想明白了,就是你的这个例子就可以:

echo "[h]ald" | grep hald
或者写的更清楚些:
echo "[h]ald" | grep '[h]ald'
作者: 可可熊    时间: 2008-07-18 15:10
标题: 回复 #19 ly5066113 的帖子
[cocobear@cocobear ~]$ echo "scim$" | grep 'scim$'
[cocobear@cocobear ~]$

刚我弄错了,应该这样。grep的时候使用$也会把自己过滤掉了。
作者: 可可熊    时间: 2008-07-18 15:11
标题: 回复 #22 ly5066113 的帖子
呵呵,你写出来我就想明白了。
作者: beauty2003    时间: 2008-07-18 15:12
这都行....
神奇~
作者: welcome008    时间: 2008-07-18 15:22
原帖由 ly5066113 于 2008-7-18 15:06 发表


http://bbs.chinaunix.net/viewthread.php?tid=480159

看看这个吧,我也是刚搜的。
开始我也只是知道这种用法而不知道原因,现在还在体会。



明白了,实际上不是屏蔽grep,而是通过屏蔽grep后的字符串,从而把grep屏蔽了。
作者: li2002    时间: 2008-07-18 15:33
大家都练成高手了~
作者: eeeef    时间: 2008-07-18 15:59
我也彻底明白了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2