提交
This commit is contained in:
1 parent
fb6d0aa63c
commit
ff1228873c
37 files changed
+11861
-1823
No files matched your search
Executable
+177
@@ -0,0 +1,177 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ===========================================
|
||||
# 学生状态变更处理服务停止脚本
|
||||
# 用于停止所有相关的处理服务
|
||||
# ===========================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
CONTROL_SCRIPT="${SCRIPT_DIR}/control_scripts.sh"
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
log() {
|
||||
local level="$1"
|
||||
local message="$2"
|
||||
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
echo -e "${timestamp} [$level] $message"
|
||||
}
|
||||
|
||||
success() {
|
||||
log "${GREEN}SUCCESS${NC}" "$1"
|
||||
}
|
||||
|
||||
error() {
|
||||
log "${RED}ERROR${NC}" "$1"
|
||||
}
|
||||
|
||||
warning() {
|
||||
log "${YELLOW}WARNING${NC}" "$1"
|
||||
}
|
||||
|
||||
# Check if control script exists and is executable
|
||||
if [[ ! -x "$CONTROL_SCRIPT" ]]; then
|
||||
error "Control script not found or not executable: $CONTROL_SCRIPT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to stop a service
|
||||
stop_service() {
|
||||
local service_name="$1"
|
||||
local service_desc="$2"
|
||||
|
||||
log "INFO" "Stopping $service_desc..."
|
||||
if "$CONTROL_SCRIPT" stop "$service_name"; then
|
||||
success "$service_desc stopped successfully"
|
||||
return 0
|
||||
else
|
||||
warning "$service_desc may not have been running"
|
||||
return 0 # Not treating this as a hard error
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to check service status after stop
|
||||
check_service_stopped() {
|
||||
local service_name="$1"
|
||||
local service_desc="$2"
|
||||
|
||||
log "INFO" "Verifying $service_desc has stopped..."
|
||||
if "$CONTROL_SCRIPT" status "$service_name" | grep -q "is not running"; then
|
||||
success "$service_desc confirmed stopped"
|
||||
return 0
|
||||
else
|
||||
warning "$service_desc may still be running"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to force kill if needed
|
||||
force_kill_service() {
|
||||
local service_name="$1"
|
||||
local script_pattern="$2"
|
||||
local service_desc="$3"
|
||||
|
||||
log "INFO" "Force killing $service_desc..."
|
||||
if pkill -f "$script_pattern"; then
|
||||
sleep 2
|
||||
success "$service_desc force killed"
|
||||
return 0
|
||||
else
|
||||
warning "No processes found for $service_desc"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Main function
|
||||
main() {
|
||||
local force_kill="${1:-false}"
|
||||
|
||||
log "INFO" "=== 学生状态变更处理服务停止脚本 ==="
|
||||
|
||||
if [[ "$force_kill" == "force" ]]; then
|
||||
log "INFO" "Performing force stop of all services..."
|
||||
|
||||
# Force kill all related processes
|
||||
force_kill_service "changes" "process_student_changes.sh" "学生状态变更处理服务"
|
||||
force_kill_service "resume" "process_student_resume.sh" "学生复学处理服务"
|
||||
|
||||
# Clean up lock and PID files
|
||||
log "INFO" "Cleaning up lock and PID files..."
|
||||
rm -f "${SCRIPT_DIR}"/*.lock
|
||||
rm -f "${SCRIPT_DIR}/pids"/*.pid
|
||||
|
||||
success "Force stop completed"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
log "INFO" "Stopping all student status change processing services..."
|
||||
|
||||
# Stop services gracefully
|
||||
stop_service "changes" "学生状态变更处理服务 (休学/退学/毕业)"
|
||||
stop_service "resume" "学生复学处理服务"
|
||||
|
||||
# Wait a moment for services to fully stop
|
||||
sleep 3
|
||||
|
||||
log "INFO" "=== 服务状态验证 ==="
|
||||
|
||||
# Check all services are stopped
|
||||
check_service_stopped "changes" "学生状态变更处理服务 (休学/退学/毕业)"
|
||||
check_service_stopped "resume" "学生复学处理服务"
|
||||
|
||||
# Final cleanup
|
||||
log "INFO" "Performing final cleanup..."
|
||||
rm -f "${SCRIPT_DIR}"/*.lock 2>/dev/null || true
|
||||
rm -f "${SCRIPT_DIR}/pids"/*.pid 2>/dev/null || true
|
||||
|
||||
log "INFO" "=== 停止完成 ==="
|
||||
success "所有服务已停止"
|
||||
|
||||
echo ""
|
||||
echo "如果服务未能正常停止,请使用强制停止:"
|
||||
echo " $0 force"
|
||||
echo ""
|
||||
echo "重新启动服务:"
|
||||
echo " ./start_services.sh"
|
||||
}
|
||||
|
||||
# Show usage
|
||||
show_usage() {
|
||||
cat << EOF
|
||||
Usage: $0 [force]
|
||||
|
||||
停止所有学生状态变更处理服务。
|
||||
|
||||
Options:
|
||||
force 强制杀死所有相关进程并清理锁文件
|
||||
|
||||
Examples:
|
||||
$0 # 正常停止所有服务
|
||||
$0 force # 强制停止所有服务
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# Parse arguments
|
||||
case "${1:-}" in
|
||||
force)
|
||||
main "force"
|
||||
;;
|
||||
-h|--help)
|
||||
show_usage
|
||||
;;
|
||||
"")
|
||||
main
|
||||
;;
|
||||
*)
|
||||
error "Unknown option: $1"
|
||||
show_usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in new issue
Block a user