diff options
Diffstat (limited to 'stop_services.sh')
-rwxr-xr-x | stop_services.sh | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/stop_services.sh b/stop_services.sh new file mode 100755 index 0000000..10f186d --- /dev/null +++ b/stop_services.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# 停止所有启动的分布式服务 +# 使用方法: +# 1. 暂停所有服务:./stop_services.sh all +# 2. 暂替某个服务:./stop_services.sh [samgr|huks|deviceauth|softbus|dm|dfs|datamgr] + +# 定义map,保存参数和对应执行的shell命令 +declare -A COMMAND_MAP=( + ["datamgr"]="pkill -f distributeddata" + ["dfs"]="pkill -f distributedfile" + ["dm"]="pkill -f device_manager" + ["softbus"]="pkill -f softbus_server" + ["deviceauth"]="pkill -f deviceauth_service" + ["huks"]="pkill -f huks_service" + ["samgr"]="pkill -f samgr" +) + +# 日志打印函数 +log() { + case $1 in + error) + echo "[ERROR] $2" + ;; + info) + echo "[INFO] $2" + ;; + debug) + if [ "$DEBUG_MODE" == "true" ]; then + echo "[DEBUG] $2" + fi + ;; + *) + echo "Invalid log level: $1" + ;; + esac +} + +# 判断参数是否为空 +if [ -z "$1" ]; then + log error "Usage: $0 [all|samgr|huks|deviceauth|softbus|dm|dfs|datamgr]" + exit 1 +fi + +# 验证参数并执行相应命令 +if [ "$1" == "all" ]; then + log info "Stop all services..." + for key in "${!COMMAND_MAP[@]}"; do + log info "Stop $key service..." + # 执行命令 + eval ${COMMAND_MAP[$key]} + done +else + if [ "${COMMAND_MAP[$1]+isset}" ]; then + log info "Stop $1 service..." + # 执行命令 + eval ${COMMAND_MAP[$1]} + else + log error "Invalid parameter: $1" + exit 1 + fi +fi + +log info "Done." |