Bash脚本获取运行进程的计数,然后在超过特定阈值时发送电子邮件

时间:2016-05-13 21:12:07

标签: bash rhel

我正在尝试创建一个脚本来获取当前正在运行的进程数,如果该数量超过1000,则向我发送一封电子邮件。我试图在bash脚本中执行此操作,我将使用cron作业来调用它。我正在使用的代码如下,我确信我只是有一些不合适的东西,只需要另一组眼睛。

PCOUNT=$(cat /proc/loadavg|awk '{print $4}'|awk -F/ '{print $2}')
if [$PCOUNT > 100]; then
    mail -s "Process Count" email@example.com
fi

3 个答案:

答案 0 :(得分:0)

您的if声明中的上下文不正确。在(( ))上尝试使用[]代替if,如下所示:

PCOUNT=$(cat /proc/loadavg|awk '{print $4}'|awk -F/ '{print $2}')
if (( $PCOUNT > 100 )); then
    mail -s "Process Count" email@example.com
fi

注意:我的系统上没有mail设置,因此我无法验证mail命令。

答案 1 :(得分:0)

  • 你可以减少到

    awk -F“| /”'{print $ 5}'/ proc / loadavg

  • 如果条件

    [$ PCOUNT -ge 1000

  • 邮件,传递$ PCOUNT

    mail -s“进程数:$ PCOUNT”

恕我直言,如果这是警告,为什么不尝试nagios插件

答案 2 :(得分:0)

经过大量的反复试验后,我终于找到了解决方案。我最终获取了awk语句的输出并将其写入文件。然后我抓住文件并将输出发送到邮件。

PCOUNT=$(awk -F" |/" '{print $5}' /proc/loadavg)
if ((PCOUNT>1000)); then
    echo "Number of Running Processes is" $PCOUNT >>/tmp/mail.txt
    cat /tmp/mail.txt | mail -s "Number of processes is rising" example@email.com
fi