linux - 如何在 Linux 中使用 grep 进行多个基于 '&' 的搜索

标签 linux oracle shell grep

我试图找出在安装了我的 oracle 的 linux 中运行的两个进程 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。

最佳答案

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

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

grep 的 -q 开关会阻止任何输出,因此您不必自己重定向到 /dev/null。如果你有 pgrep,你可以使用它来代替 psgrep

当然,您可以将其“优化”到一行中,可选择使用另一个 && 而不是 if 但我真的不这样做看不到优势!

关于linux - 如何在 Linux 中使用 grep 进行多个基于 '&' 的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34809684/

相关文章:

linux - 将换行符更改为 Linux 格式

sql-server - 当我尝试将 Oracle SQL 安装到 Linux 服务器上时,这个错误意味着什么?

database - 将主键从字符串更改为数字的最简单方法

node.js - Grunt - 是否有可能有一个只运行一次的任务?

bash - 将多个参数传递给 UNIX shell 脚本

linux - 如何在 Linux 上运行服务作为守护进程?

node.js - 崩溃后如何自动重启 Node 脚本 - 或启动该 Node 的 init.d 服务?

string - 如何在 Oracle 中将字节字符串转换为数字?

linux - shell 如何知道它在哪个目录中?

linux - 机器重启后openssl报错解密失败或坏记录mac