linux - 用于检查多个正在运行的进程的 Bash 脚本

标签 linux bash shell

我编写了以下代码来确定进程是否正在运行:

#!/bin/bash
ps cax | grep 'Nginx' > /dev/null
if [ $? -eq 0 ]; then
  echo "Process is running."
else
  echo "Process is not running."
fi

我想使用我的代码检查多个进程并使用一个列表作为输入(见下文),但陷入了 foreach 循环。

CHECK_PROCESS=nginx, mysql, etc

使用 foreach 循环检查多个进程的正确方法是什么?

最佳答案

如果您的系统安装了 pgrep,您最好使用它来代替 ps 输出的 greping。

关于您的问题,如何遍历进程列表,您最好使用数组。一个可行的例子可能是这样的:

(注意:避免大写变量,这是一个非常糟糕的 bash 做法):

#!/bin/bash

# Define an array of processes to be checked.
# If properly quoted, these may contain spaces
check_process=( "nginx" "mysql" "etc" )

for p in "${check_process[@]}"; do
    if pgrep "$p" > /dev/null; then
        echo "Process \`$p' is running"
    else
        echo "Process \`$p' is not running"
    fi
done

干杯!

关于linux - 用于检查多个正在运行的进程的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13330848/

相关文章:

linux - Linux : merge fails but co, 上带有公钥的 svn+ssh,提交有效

linux - Debian 的简单初始化脚本出现语法错误 ";; unexpected"

linux - 如何打印前n列和与模式匹配的列?

mysql - MySQL如何生成MD5加密密码?

linux - shell 脚本 - 当条件检查范围失败时

auto_increment 脚本上的 Xcode 4.3 Shell 脚本语法错误

linux - linux下找不到别人的主目录

python - 在 Python 中设置硬件时钟?

linux - 如何在 unix/linux 上跟踪原始文件的多个符号链接(symbolic link)?

linux - 从 bash 中的字符串中提取数字