1

我有一个脚本,我必须在其中检查一个进程是否按其名称运行,并且我正在使用psand来执行它grep。问题是我必须对许多事情进行 grep 以避免发现误报。

到目前为止,我有一个grep如下所示的链:

ps -ef | grep -i $process_name | grep -i perl | grep -v do_all | grep -v grep

四个greps。其中三个是为了避免误报。

我想知道是否有办法避免这种“管道链”并使用单个grep来达到相同的结果。

尽管你们中的一些人可能会回答说有更简洁的方法可以找出进程是否存在,但我希望同样能够回答这个问题,只是为了更好地理解grep命令的用法。

4

2 回答 2

2

没有真正的理由避免将它们链接起来,是吗?

如果你真的想要,你可以将它们与 | 在 egrep 中:

ps -ef | egrep -i "$process_name|perl" |  egrep -v 'do_all|grep'
于 2012-09-29T21:00:14.380 回答
1

这是一种使用方法GNU awk

ps -ef | awk -v process="$process_name" 'BEGIN { IGNORECASE=1 } $0 ~ process && /perl/ && !/do_all/'
于 2012-09-30T03:04:27.470 回答