在一个服务器的 root 目录下,创建一个 check-services.sh 文件
脚本内容如下:
#!/bin/bash
## 检查本机上的服务
## $1 - 服务名称
## $2 - 进程关键字
# function find_service_in_localhost() {
# local service=$1
# local keyword=$2
#
# count=$(ps aux | grep ${keyword} | grep -v grep | wc -l)
# if [ ${count} -gt 0 ]; then
# printf "%-25s 运行中\n" ${service}
# else
# printf "%-25s 没有运行!!!\n" ${service}
# fi
# }
# 主机列表 (在系统 host 文件中设置如下的机器名 在 /etc/hosts 下面)
servers=(server1 server2 server3 server4 server5)
# 获取所有主机上的进程信息
# 各个服务要陪着 ssh 免密连接
len=${#servers[@]}
for ((i=0; i < $len; i++)); do
cmds[$i]=$(ssh root@${servers[$i]} ps ax | awk '{out=$5; for(i=6;i<=NF;i++){out=out" "$i}; print out}')
done
# 在所有主机上的查找服务
function find_service_in_servers() {
local service=$1
local keyword=$2
local len=${#servers[@]}
for ((i=0; i < $len; i++)); do
count=$(echo "${cmds[$i]}" | grep ${keyword} | wc -l)
if [ ${count} -gt 0 ] ; then
found=true
printf "%-25s 运行在 %s\n" ${service} ${servers[$i]}
fi
done
if [ "$found" = false ] ; then
printf "%-25s 没有运行!!!\n" ${service}
fi
}
find_service_in_servers mysqld mysqld
find_service_in_servers redis-server redis-server
find_service_in_servers nginx nginx
find_service_in_servers consul consul
find_service_in_servers device-access device-access-1.0.0-SNAPSHOT.jar
2、给创建的 check-services.sh 赋 权限
chmod 777 check-services.sh
3、查询返回结果