如何在Linux中使用grep进行多次'&'基于搜索

时间:2016-01-15 11:06:28

标签: linux oracle shell grep

我试图找出两个进程在Linux中运行我的oracle安装pmonsmon 我用下面的命令

ps -ae | grep pmon > /dev/null;echo $?

 ps -ae | grep smon > /dev/null;echo $?

现在我想将两个命令优化为单个 我知道grep中有选项如下

ps -ae | grep 'pmon\|smon' > /dev/null;echo $?

但问题在于,如果运行它的任何进程返回0错误代码 但我想要一个基于AND的搜索。仅当两个进程都在运行时,命令才应返回0。

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

pgrep pmon > /dev/null && pgrep smon > /dev/null; echo $?

pgrep pmon > /dev/null && pgrep smon > /dev/null && echo both running

答案 1 :(得分:1)

我建议你使用这样的东西:

if ps -ae | grep -q pmon && ps -ae | grep -q smon; then
    echo "pmon and smon are running"
fi

-q切换到grep会阻止任何输出,因此您不必自己重定向到/dev/null。如果您有pgrep,则可以使用ps而不是grep&&

当然,你可以“优化”这一行,可选择使用另一个if代替<select name="countries[]" id="update_supp_last_countries" style="width:305px;" multiple="multiple" required> <?php foreach($supp_last_count_Row as $results5){ $supp_last_country5[$i5] = $results5['countries']; $i5++; ?> <option value='<?php echo $supp_last_country5[$itr5];?>' selected> <?php echo $supp_last_country5[$itr5];?> </option> <?php $itr5++; } ?> <option value="Afghanistan">Afghanistan</option> <option value="Albania">Albania</option> <option value="Algeria">Algeria</option> <option value="American Samoa">American Samoa</option> <option value="Andorra">Andorra</option> <option value="Angola">Angola</option> <option value="Anguilla">Anguilla</option> <option value="Antartica">Antarctica</option> <option value="Antigua and Barbuda">Antigua and Barbuda</option> ,但我真的看不到这个优势!< / p>

答案 2 :(得分:0)

试试这个:

ps -ae | egrep&#39; pmon,smon&#39;