#!/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 start a service start_service() { local service_name="$1" local service_desc="$2" log "INFO" "Starting $service_desc..." if "$CONTROL_SCRIPT" start "$service_name"; then success "$service_desc started successfully" return 0 else error "Failed to start $service_desc" return 1 fi } # Function to check service status check_service() { local service_name="$1" local service_desc="$2" log "INFO" "Checking $service_desc status..." if "$CONTROL_SCRIPT" status "$service_name" | grep -q "is running"; then success "$service_desc is running" return 0 else warning "$service_desc is not running" return 1 fi } # Main function main() { log "INFO" "=== 学生状态变更处理服务启动脚本 ===" log "INFO" "Starting all student status change processing services..." local failed_services=() # Start changes processing service if ! start_service "changes" "学生状态变更处理服务 (休学/退学/毕业)"; then failed_services+=("changes") fi # Start resume processing service if ! start_service "resume" "学生复学处理服务"; then failed_services+=("resume") fi # Wait a moment for services to fully start sleep 3 log "INFO" "=== 服务状态检查 ===" # Check all services status check_service "changes" "学生状态变更处理服务 (休学/退学/毕业)" check_service "resume" "学生复学处理服务" # Summary log "INFO" "=== 启动完成 ===" if [[ ${#failed_services[@]} -eq 0 ]]; then success "所有服务启动成功" echo "" echo "服务控制命令:" echo " 查看状态: $CONTROL_SCRIPT statusall" echo " 停止服务: $CONTROL_SCRIPT stopall" echo " 重启服务: $CONTROL_SCRIPT restart changes|resume" echo "" echo "日志文件位置: /var/log/student_status_change/" else error "以下服务启动失败: ${failed_services[*]}" echo "" echo "故障排除:" echo "1. 检查数据库配置: cat data.conf" echo "2. 查看日志文件: tail -f /var/log/student_status_change/*.log" echo "3. 检查数据库连接: mysql -h\$DB_HOST -P\$DB_PORT -u\$DB_USER -p\$DB_PASS \$DB_NAME -e 'SELECT 1;'" exit 1 fi } # Run main function main "$@"