我试图找出在安装了我的 oracle 的 linux 中运行的两个进程 pmon
和 smon
我使用了下面的命令
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。
最佳答案
我建议你使用这样的东西:
if ps -ae | grep -q pmon && ps -ae | grep -q smon; then
echo "pmon and smon are running"
fi
grep 的 -q
开关会阻止任何输出,因此您不必自己重定向到 /dev/null
。如果你有 pgrep
,你可以使用它来代替 ps
到 grep
。
当然,您可以将其“优化”到一行中,可选择使用另一个 &&
而不是 if
但我真的不这样做看不到优势!
关于linux - 如何在 Linux 中使用 grep 进行多个基于 '&' 的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34809684/