#!/bin/bash # 确保以 root 权限运行,以便终止所有进程 if [ "$EUID" -ne 0 ]; then echo "错误:请使用 sudo 权限运行此脚本。 (例如:sudo ./stop_services.sh)" exit 1 fi echo "开始执行停止脚本..." # 1. 停止 'videoSurveillance' 进程 # 使用 pkill -f 匹配包含 "videoSurveillance" 的完整进程名 echo "---" echo "1. 正在尝试停止 'videoSurveillance' 进程..." if pkill -f "videoSurveillance"; then echo " 已发送终止信号到 'videoSurveillance'。" else echo " 未找到 'videoSurveillance' 进程。" fi # 2. 停止占用 5060 端口的进程 echo "---" echo "2. 正在尝试停止占用 5060 端口的进程..." # lsof -t -i:5060 ( -t 仅输出 PID, -i:5060 查找使用该端口的) PID_5060=$(lsof -t -i:5060) if [ -n "$PID_5060" ]; then echo " 找到占用 5060 端口的进程 PID: $PID_5060。正在强制终止..." # -9 是 SIGKILL 信号 (强制终止) kill -9 $PID_5060 echo " 已终止 PID: $PID_5060。" else echo " 未找到占用 5060 端口的进程。" fi # 3. 停止占用 10001 端口的 'scp-config' 进程 echo "---" echo "3. 正在尝试停止占用 10001 端口的 'scp-config' 进程..." FOUND_10001=false # 查找所有使用 10001 端口的 PID PIDS_10001=$(lsof -t -i:10001) if [ -n "$PIDS_10001" ]; then for pid in $PIDS_10001; do # 获取该 PID 的完整命令行 PNAME=$(ps -p $pid -o args=) # 检查命令行是否包含 "scp-config" if echo "$PNAME" | grep -q "scp-config"; then echo " 找到匹配进程: PID $pid (名称 '$PNAME') 正在使用端口 10001。" kill -9 $pid echo " 已终止 PID: $pid。" FOUND_10001=true fi done fi if [ "$FOUND_10001" = false ]; then echo " 未找到名为 'scp-config' 且占用 10001 端口的进程。" fi echo "---" echo "脚本执行完毕。"