#!/usr/bin/env bash #kill `cat gate_server.pid*` #kill `cat game_server.pid*` #kill `cat db_server.pid*` #!/bin/sh #date=$(date +%Y%m%d-%H:%M:%S) #echo "time=$date" #mkdir -p /redis-backup #redis-cli save #cp /www/server/redis/dump.rdb /redis-backup/dump-$date.rdb quit=1 index=0 function iterator_dir() { local dir="$1" for element in "$dir"/*; do # 检查文件名是否包含 "pid"(不区分大小写) if [[ "$element" =~ [pP][iI][dD] ]]; then echo "Found PID file: $element" # 读取 PID,并去除空格/换行符 pidValue=$(cat "$element" 2>/dev/null | tr -d '[:space:]') # 检查是否是有效数字 if [[ ! "$pidValue" =~ ^[0-9]+$ ]]; then echo "Error: $element does not contain a valid PID (got: '$pidValue')" continue fi # 检查进程是否存在 if ps -p "$pidValue" >/dev/null 2>&1; then echo "Killing process $pidValue..." # 先尝试 SIGTERM(优雅终止) kill "$pidValue" 2>/dev/null sleep 1 # 等待进程处理终止信号 # 检查是否仍然存活,如果是,则强制 SIGKILL if ps -p "$pidValue" >/dev/null 2>&1; then echo "Process $pidValue still running, sending SIGKILL..." kill -9 "$pidValue" 2>/dev/null fi ((index++)) else echo "Process $pidValue does not exist." fi else quit=0 fi done } iterator_dir .