Bash 获取 运行 进程计数并在超过特定阈值时发送电子邮件的脚本
Bash Script that gets a count of running processes and then emails if over a certain threshold
我正在尝试创建一个脚本来获取 运行 进程的当前数量,如果该数量超过 1000,则给我发送电子邮件。我正在尝试在 bash 脚本中执行此操作,我将只使用 cron 作业来调用它。我正在使用的代码在下面,我确定我只是有一些不合适的地方,只需要另一双眼睛。
PCOUNT=$(cat /proc/loadavg|awk '{print }'|awk -F/ '{print }')
if [$PCOUNT > 100]; then
mail -s "Process Count" email@example.com
fi
您的 if
陈述中的上下文不正确。在您的 if
上尝试使用 (( ))
而不是 []
,如下所示:
PCOUNT=$(cat /proc/loadavg|awk '{print }'|awk -F/ '{print }')
if (( $PCOUNT > 100 )); then
mail -s "Process Count" email@example.com
fi
注意:我的系统上没有 mail
设置,所以我无法验证 mail
命令。
你可以将 awk 减少到
awk -F" |/" '{print $5}' /proc/loadavg
如果条件
[$PCOUNT -ge 1000
邮件,传递 $PCOUNT
邮件-s "Process Count: $PCOUNT"
恕我直言,如果这是为了提醒你为什么不试试 nagios 插件
经过反复试验,我终于找到了解决办法。我最终获取了 awk 语句的输出并将其写入文件。然后我 cat 文件并将输出发送到邮件。
PCOUNT=$(awk -F" |/" '{print }' /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
我正在尝试创建一个脚本来获取 运行 进程的当前数量,如果该数量超过 1000,则给我发送电子邮件。我正在尝试在 bash 脚本中执行此操作,我将只使用 cron 作业来调用它。我正在使用的代码在下面,我确定我只是有一些不合适的地方,只需要另一双眼睛。
PCOUNT=$(cat /proc/loadavg|awk '{print }'|awk -F/ '{print }')
if [$PCOUNT > 100]; then
mail -s "Process Count" email@example.com
fi
您的 if
陈述中的上下文不正确。在您的 if
上尝试使用 (( ))
而不是 []
,如下所示:
PCOUNT=$(cat /proc/loadavg|awk '{print }'|awk -F/ '{print }')
if (( $PCOUNT > 100 )); then
mail -s "Process Count" email@example.com
fi
注意:我的系统上没有 mail
设置,所以我无法验证 mail
命令。
你可以将 awk 减少到
awk -F" |/" '{print $5}' /proc/loadavg
如果条件
[$PCOUNT -ge 1000
邮件,传递 $PCOUNT
邮件-s "Process Count: $PCOUNT"
恕我直言,如果这是为了提醒你为什么不试试 nagios 插件
经过反复试验,我终于找到了解决办法。我最终获取了 awk 语句的输出并将其写入文件。然后我 cat 文件并将输出发送到邮件。
PCOUNT=$(awk -F" |/" '{print }' /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