在一個服務器的 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、查詢返回結果