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升序显示。