Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash脚本,获取运行进程的计数,如果超过某个阈值,则发送电子邮件_Bash_Rhel - Fatal编程技术网

Bash脚本,获取运行进程的计数,如果超过某个阈值,则发送电子邮件

Bash脚本,获取运行进程的计数,如果超过某个阈值,则发送电子邮件,bash,rhel,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@examp

我正在尝试创建一个脚本来获取当前正在运行的进程的数量,如果该数量超过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

您的
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
命令。

您的
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
命令。

  • 你可以把工作时间缩短到

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

  • 如果条件

    [$PCOUNT-ge 1000

  • 邮寄,传递$PCOUNT

    邮件-s“进程计数:$PCOUNT”

嗯,如果这是为了提醒你为什么不试试nagios插件
  • 你可以把工作时间缩短到

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

  • 如果条件

    [$PCOUNT-ge 1000

  • 邮寄,传递$PCOUNT

    邮件-s“进程计数:$PCOUNT”


  • 嗯,如果这是为了提醒你为什么不试试nagios插件呢?

    经过大量的尝试和错误,我终于找到了解决方案。我最终得到了awk语句的输出,并将其写入了一个文件。然后我对该文件进行了cat,并将输出发送到mail

    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
    

    经过大量的尝试和错误,我终于找到了一个解决方案。我最终获得了awk语句的输出并将其写入一个文件。然后我对该文件进行了cat,并将输出发送到mail

    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
    

    ?“您的问题必须包含已经正常工作的代码”
    awk
    能够将输入文件作为参数,因此您可以删除该参数。此外,请使用
    if((pcount>100));然后…;fi
    ,并在中读取条件块?“您的问题必须包含已经正常工作的代码”
    awk
    能够将输入文件作为参数,因此您可以删除它。此外,使用
    if((pcount>100));then…;fi
    代替,并在中读取条件块