查询 所有服务所在具体哪台服务器上的脚本

在一个服务器的 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、查询返回结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值