supervisor sh批量启停作业管理脚本

supervisor sh批量启停作业管理脚本

因为不同作业对于不同场景下的启停不一致,当作业超多时会造成启停上的耗时增加和错误性的增加。为了管理方便,增加一个shell脚本来一键临时启停是较好的办法。

思路

  • 临时配置文件
    好处就是可以根据业务场景进行配置
  • 允许start
    已经start的略过,stop的start
  • 允许stop
    已经stop的略过,start的stop
  • 允许restart
    已经start的先stop再start,stop的start

初始化

做一下初始检查,读取配置文件,生成数组

#!/bin/bash

# 程序列表文件,每行一个程序名
PROGRAMS_LIST="programs_list.txt"

# 检查是否提供了操作参数
if [ $# -eq 0 ]; then
    echo "使用方法: $0 {start|stop|restart}"
    exit 1
fi

# 读取操作参数
ACTION=$1
PROGRAMS=()

# 检查程序列表文件是否存在
if [ ! -f "$PROGRAMS_LIST" ]; then
    echo "程序列表文件不存在: $PROGRAMS_LIST"
    exit 1
fi

# 读取文件中的每个行项作为程序名称
while IFS= read -r program
do
    PROGRAMS+=("$program") # 将程序名称添加到数组中
done < "$PROGRAMS_LIST"

循环数组进行操作

# 根据提供的参数执行操作
for program in "${PROGRAMS[@]}"
do
    if [ "$ACTION" == "start" ]; then
        # 如果操作是启动
    elif [ "$ACTION" == "stop" ]; then
	    # 如果操作是停止
	elif [ "$ACTION" == "restart" ]; then
	    # 如果操作是重启
    else
        echo "未知操作: $ACTION"
done

echo "操作完成。"

具体判断

  • start
		# 如果操作是启动
        if supervisorctl status "$program" > /dev/null 2>&1; then
            if supervisorctl status "$program" | grep -q 'RUNNING'; then
                echo "程序已经在运行: $program"
            else
                echo "启动程序: $program"
                supervisorctl start "$program"
            fi
        else
            echo "程序不存在,无法启动: $program"
        fi
  • stop
		# 如果操作是停止
        if supervisorctl status "$program" > /dev/null 2>&1; then
            if supervisorctl status "$program" | grep -q 'STOPPED'; then
                echo "程序已停止: $program"
            else
                echo "停止程序: $program"
                supervisorctl stop "$program"
            fi
        else
            echo "程序不存在,无法启动: $program"
        fi
  • restart
		# 如果操作是重启
        if supervisorctl status "$program" > /dev/null 2>&1; then
            if supervisorctl status "$program" | grep -q 'RUNNING'; then
                echo "停止程序: $program"
                supervisorctl stop "$program"
                echo "启动程序: $program"
                supervisorctl start "$program"
            else
	            echo "启动程序: $program"
                supervisorctl start "$program"
            fi
        else
            echo "程序不存在,无法启动: $program"
        fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值