#!/bin/bash

# 确保以 root 用户运行
if [ "$EUID" -ne 0 ]; then
  echo "此脚本必须以 root 用户权限运行。请使用 sudo bash $0"
  exit 1
fi

# 1. 定义路径和表达式
RESTART_DIR="/opt/npc"
RESTART_SCRIPT="$RESTART_DIR/restart_npc.sh"
LOG_FILE="$RESTART_DIR/npc_reboot.log" # <--- 日志文件路径已更改

# 定时表达式：凌晨 2:30，每两天的奇数日期运行
CRON_SCHEDULE="30 2 1-31/2 * *"
CRON_JOB="$CRON_SCHEDULE $RESTART_SCRIPT"


echo "=========================================="
echo "正在创建 NPC 服务重启环境..."
echo "脚本目标路径: $RESTART_SCRIPT"
echo "日志目标路径: $LOG_FILE"

# 2. 确保目标目录存在
if [ ! -d "$RESTART_DIR" ]; then
    echo "创建目录: $RESTART_DIR"
    mkdir -p "$RESTART_DIR"
fi


# 3. 写入 NPC 重启逻辑脚本（已修正格式，使用同目录日志）
cat > "$RESTART_SCRIPT" << EOF
#!/bin/bash

# 脚本功能：停止 npc 服务，等待 2 分钟，然后启动服务
# 注意：该脚本通过 root 用户的 Crontab 执行。
LOG_FILE="$LOG_FILE"

echo "----------------------------------------" >> "\$LOG_FILE"
echo "\$(date +'%Y-%m-%d %H:%M:%S'): 定时重启任务开始执行." >> "\$LOG_FILE"

# 停止服务
echo "\$(date +'%Y-%m-%d %H:%M:%S'): 正在停止 npc 服务..." >> "\$LOG_FILE"
systemctl stop npc >> "\$LOG_FILE" 2>&1

# 等待 120 秒
echo "\$(date +'%Y-%m-%d %H:%M:%S'): 等待 2 分钟 (120 秒)..." >> "\$LOG_FILE"
sleep 120

# 启动服务
echo "\$(date +'%Y-%m-%d %H:%M:%S'): 正在启动 npc 服务..." >> "\$LOG_FILE"
systemctl start npc >> "\$LOG_FILE" 2>&1

echo "\$(date +'%Y-%m-%d %H:%M:%S'): npc 重启流程完成." >> "\$LOG_FILE"

exit 0
EOF

# 4. 赋予脚本执行权限
chmod +x "$RESTART_SCRIPT"
echo "脚本创建并设置权限完成。"

# 5. 添加入 root 用户的 crontab 定时任务
echo "正在检查并设置 root 用户的 Crontab 任务..."

# 保证不会重复添加，并添加新任务
(crontab -l 2>/dev/null | grep -v -F "$RESTART_SCRIPT" ; echo "$CRON_JOB") | crontab -

if [ $? -eq 0 ]; then
    echo "✅ 任务添加成功！"
    echo "定时表达式: $CRON_SCHEDULE"
    echo "脚本路径: $RESTART_SCRIPT"
    echo "日志路径: $LOG_FILE"
    echo "------------------------------------------"
    echo "任务将会在每月的奇数日期（约每两天）的凌晨 2 点 30 分运行一次。"
    echo "请运行 'sudo crontab -l' 检查任务是否已添加。"
else
    echo "❌ 任务添加失败，请手动检查 Crontab 配置。"
fi

echo "=========================================="