summaryrefslogtreecommitdiff
path: root/stop_services.sh
blob: 10f186d142b0752f65a5c812b7a9c9127e21feed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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."