微服务启停脚本

以下是一个简单的 Shell 脚本示例,用于控制微服务的启停。该脚本允许你指定服务名、版本、目录和启动参数。为了简单起见,脚本将使用 systemctl(如果你的系统支持)或手动管理进程(如果不支持 systemctl)。

请保存以下内容为 microservice_control.sh 文件,并确保该脚本具有可执行权限(例如,使用 chmod +x microservice_control.sh)。

sh
#!/bin/bash

变量定义

SERVICE_NAME=$1
VERSION=$2
BASE_DIR=$3
PARAMS=$4

服务文件路径

SERVICE_FILE="/etc/systemd/system/ S E R V I C E N A M E − {SERVICE_NAME}- SERVICENAME{VERSION}.service"
SERVICE_UNIT=" S E R V I C E N A M E − {SERVICE_NAME}- SERVICENAME{VERSION}.service"

服务执行文件路径

EXEC_PATH=" B A S E D I R / b i n / {BASE_DIR}/bin/ BASEDIR/bin/{SERVICE_NAME}"

日志文件路径

LOG_FILE=" B A S E D I R / l o g s / {BASE_DIR}/logs/ BASEDIR/logs/{SERVICE_NAME}-${VERSION}.log"

检查参数数量

if [ “$#” -ne 4 ]; then
echo “Usage: $0 <service_name> <base_directory> <startup_params>”
exit 1
fi

创建服务文件(如果不存在)

create_service_file() {
cat < S E R V I C E F I L E [ U n i t ] D e s c r i p t i o n = {SERVICE_FILE} [Unit] Description= SERVICEFILE[Unit]Description={SERVICE_NAME} ${VERSION} Service
After=network.target

[Service]
Type=simple
User=nobody
WorkingDirectory= B A S E D I R E x e c S t a r t = {BASE_DIR} ExecStart= BASEDIRExecStart={EXEC_PATH} ${PARAMS}
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# 重新加载 systemd 配置
systemctl daemon-reload

}

启动服务

start_service() {
if ! [ -f ${SERVICE_FILE} ]; then
echo “Service file not found. Creating…”
create_service_file
fi
systemctl start ${SERVICE_UNIT}
if [ ? − e q 0 ] ; t h e n e c h o " ? -eq 0 ]; then echo " ?eq0];thenecho"{SERVICE_NAME} ${VERSION} started."
else
echo “Failed to start ${SERVICE_NAME} ${VERSION}.”
fi
}

停止服务

stop_service() {
if ! [ -f ${SERVICE_FILE} ]; then
echo “Service file not found.”
exit 1
fi
systemctl stop ${SERVICE_UNIT}
if [ ? − e q 0 ] ; t h e n e c h o " ? -eq 0 ]; then echo " ?eq0];thenecho"{SERVICE_NAME} ${VERSION} stopped."
else
echo “Failed to stop ${SERVICE_NAME} ${VERSION}.”
fi
}

检查服务状态

status_service() {
if ! [ -f ${SERVICE_FILE} ]; then
echo “Service file not found.”
exit 1
fi
systemctl status ${SERVICE_UNIT}
}

检查命令参数

case “$5” in
start)
start_service
;;
stop)
stop_service
;;
status)
status_service
;;
*)
echo “Usage: $0 <service_name> <base_directory> <startup_params> {start|stop|status}”
exit 1
;;
esac
使用说明
提供参数:
:服务名称。
:服务版本。
:服务的基础目录。
:服务的启动参数。
{start|stop|status}:控制服务的操作(启动、停止、状态)。
执行脚本:
启动服务:./microservice_control.sh my_service 1.0.0 /path/to/service “param1 param2”
停止服务:./microservice_control.sh my_service 1.0.0 /path/to/service “param1 param2” stop
检查状态:./microservice_control.sh my_service 1.0.0 /path/to/service “param1 param2” status
注意事项
该脚本假定 systemd 是系统的服务管理器。如果你的系统不使用 systemd,你可能需要手动管理进程(例如,使用 nohup 或 & 在后台运行)。
确保脚本中指定的路径(如执行文件路径和日志文件路径)是有效的。
User=nobody 可以根据实际需求更改为你希望运行服务的用户。
该脚本会创建并管理一个 systemd 服务单元文件,位于 /etc/systemd/system/ 目录下。确保你有足够的权限写入该文件。

猜你喜欢

转载自blog.csdn.net/qq_36083245/article/details/143278858