Loading

Shell快速判断服务器是否在线以及占用情况(进程是否运行)

场景

项目使用36台节点服务器,目前需要判断在线节点数量与占用情况。

实现

使用shell script执行ping成功则反馈在线并判断占用,失败则返回离线。
占用判断通过查询特定名称进程是否存在实现。

#!/bin/bash
echo Checking hosts...
for $host in Server-{{0..9},{A..Z}}
do
{
    if ping -w 3 $host > /dev/null
    then
        if [ `ssh user@$host pgrep -c myapp` -gt 0 ]
        then
            echo "$host is online but busy."
        else
            echo "$host is online and free."
        fi
    else
        echo "$host is offline."
    fi
}&
done
wait

若发行版未包含gprep工具,可使用 ps -e|grep myapp|wc -l代替

调用

由于采用异步操作,返回结果可能是乱序。
执行时使用./check.sh | sort可按ASCII升序显示。

posted @ 2020-07-14 09:39  azureology  阅读(421)  评论(0编辑  收藏  举报