mirror of
https://github.com/hotyue/IP-Sentinel.git
synced 2026-09-05 15:39:16 +08:00
refactor(core): Enable Systemd and upgrade Sentinel service orchestration
The legacy crontabs have been superseded by Systemd to fortify orchestration of our global fleet of Sentinels. While cron relies on timed, fire-and-forget execution, Systemd elevates our operations into natively integrated, state-aware OS daemons. This paradigm shift unlocks precise lifecycle management, unified logging (inspect all service logs with `journalctl -t ip-sentinel`), and absolute control over module deployment. - Battle-Hardened: Sentinels now auto-resurrect upon failure, bypassing minute-long cron wait times. - Zero-Impact Missions: Sentinels now operate under strict `idle` CPU/IO scheduling. This guarantees that automated maintenance cycles yield to high-priority user interactions, and never impact primary server workloads. - Field Intelligence Auto-Stagger: Service-level `RandomizedDelaySec` natively staggers Agent check-ins to protect the Command Center. - Legacy Fallback: OS interrogation on deployment ensures a seamless fallback to cron for Sentinels operating in Alpine/OpenRC environments. The fleet is more resilient than ever, but the architecture is always evolving. I highly welcome any reviews/suggestions from the original Author/Commander to perfect this pull request!
This commit is contained in:
+175
-28
@@ -630,38 +630,185 @@ fi
|
|||||||
|
|
||||||
chmod +x ${INSTALL_DIR}/core/*.sh
|
chmod +x ${INSTALL_DIR}/core/*.sh
|
||||||
|
|
||||||
# 7. 配置系统定时任务 (高频调度与看门狗)
|
|
||||||
echo -e "\n[7/7] 正在注入系统定时任务与看门狗进程..."
|
|
||||||
crontab -l 2>/dev/null | grep -v "ip_sentinel" > /tmp/cron_backup || true
|
|
||||||
|
|
||||||
# 核心养护模块: 每 30 分钟触发一次
|
|
||||||
echo "*/30 * * * * ${INSTALL_DIR}/core/runner.sh >/dev/null 2>&1" >> /tmp/cron_backup
|
|
||||||
# 养料更新模块: (v3.3.0升级) 每天凌晨 3 点触发,由中枢自动进行分频调度
|
|
||||||
echo "0 3 * * * ${INSTALL_DIR}/core/updater.sh >/dev/null 2>&1" >> /tmp/cron_backup
|
|
||||||
|
|
||||||
# [v3.3.0 新增] 初始化 UA 指纹库更新时间戳,确立 30 天滚动周期的计算锚点
|
# [v3.3.0 新增] 初始化 UA 指纹库更新时间戳,确立 30 天滚动周期的计算锚点
|
||||||
echo $(date +%s) > "${INSTALL_DIR}/core/.ua_last_update"
|
echo $(date +%s) > "${INSTALL_DIR}/core/.ua_last_update"
|
||||||
|
|
||||||
# 如果配置了联控,启动 Webhook 与战报任务
|
# [v3.0.1新增修改 3: 删除原来的 curl 取 IP,直接使用我们上方锁定的 BIND_IP]
|
||||||
if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then
|
# 并提前写入 IP 缓存,彻底阻断 agent_daemon 首次启动时的重复推送
|
||||||
# 每天早上 8 点发送昨天的统计战报
|
# [修复竞态]: 提前写入公网 IP 缓存,彻底阻断 agent_daemon 首次启动时的抢跑推送
|
||||||
echo "0 8 * * * ${INSTALL_DIR}/core/tg_report.sh >/dev/null 2>&1" >> /tmp/cron_backup
|
echo "$SAFE_PUBLIC_IP" > "${INSTALL_DIR}/core/.last_ip"
|
||||||
|
|
||||||
# [v3.0.1新增修改 3: 删除原来的 curl 取 IP,直接使用我们上方锁定的 BIND_IP]
|
|
||||||
# 并提前写入 IP 缓存,彻底阻断 agent_daemon 首次启动时的重复推送
|
|
||||||
# [修复竞态]: 提前写入公网 IP 缓存,彻底阻断 agent_daemon 首次启动时的抢跑推送
|
|
||||||
echo "$SAFE_PUBLIC_IP" > "${INSTALL_DIR}/core/.last_ip"
|
|
||||||
|
|
||||||
# 双保险守护进程看门狗
|
|
||||||
echo "@reboot nohup bash ${INSTALL_DIR}/core/agent_daemon.sh >/dev/null 2>&1 &" >> /tmp/cron_backup
|
|
||||||
echo "* * * * * nohup bash ${INSTALL_DIR}/core/agent_daemon.sh >/dev/null 2>&1 &" >> /tmp/cron_backup
|
|
||||||
|
|
||||||
# 安装时立刻启动一次边缘守护进程
|
|
||||||
nohup bash "${INSTALL_DIR}/core/agent_daemon.sh" >/dev/null 2>&1 &
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -f /tmp/cron_backup ] && crontab /tmp/cron_backup 2>/dev/null
|
# 7. 配置系统定时任务 (高频调度与看门狗)
|
||||||
rm -f /tmp/cron_backup
|
echo -e "\n[7/7] 正在注入系统定时任务与看门狗进程..."
|
||||||
|
if command -v systemctl >/dev/null 2>&1; then
|
||||||
|
echo "💡 检测到 Systemd 环境,正在部署 Systemd 服务单元..."
|
||||||
|
|
||||||
|
# 1. 编写 Runner 核心养护模块服务
|
||||||
|
cat > /etc/systemd/system/ip-sentinel-runner.service << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=IP-Sentinel Runner Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
SyslogIdentifier=ip-sentinel
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/bin/bash ${INSTALL_DIR}/core/runner.sh
|
||||||
|
User=root
|
||||||
|
CPUSchedulingPolicy=idle
|
||||||
|
IOSchedulingClass=idle
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 2. 编写 Runner 定时器 (每 30 分钟): 每次运行前随机休眠 0 到 180 秒
|
||||||
|
cat > /etc/systemd/system/ip-sentinel-runner.timer << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Timer for IP-Sentinel Runner Service
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=10
|
||||||
|
OnUnitActiveSec=30min
|
||||||
|
RandomizedDelaySec=180
|
||||||
|
Persistent=true
|
||||||
|
Unit=ip-sentinel-runner.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 3. 编写 Updater 养料更新模块服务
|
||||||
|
cat > /etc/systemd/system/ip-sentinel-updater.service << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=IP-Sentinel Updater Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
SyslogIdentifier=ip-sentinel
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/bin/bash ${INSTALL_DIR}/core/updater.sh
|
||||||
|
User=root
|
||||||
|
CPUSchedulingPolicy=idle
|
||||||
|
IOSchedulingClass=idle
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 4. 编写 Updater 定时器 (每天凌晨 3 点触发)
|
||||||
|
cat > /etc/systemd/system/ip-sentinel-updater.timer << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Timer for IP-Sentinel Updater Service
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnCalendar=*-*-* 03:00:00
|
||||||
|
Persistent=true
|
||||||
|
Unit=ip-sentinel-updater.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 重载服务配置并启动服务
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable --now ip-sentinel-runner.timer
|
||||||
|
systemctl enable --now ip-sentinel-updater.timer
|
||||||
|
# 强制重载服务,兼容 OTA
|
||||||
|
systemctl restart ip-sentinel-runner.timer ip-sentinel-updater.timer
|
||||||
|
|
||||||
|
# 如果配置了联控,启动 Webhook 与战报任务
|
||||||
|
if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then
|
||||||
|
# 编写 TG 战报服务
|
||||||
|
cat > /etc/systemd/system/ip-sentinel-report.service << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=IP-Sentinel Telegram Report Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
SyslogIdentifier=ip-sentinel
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/bin/bash ${INSTALL_DIR}/core/tg_report.sh
|
||||||
|
User=root
|
||||||
|
CPUSchedulingPolicy=idle
|
||||||
|
IOSchedulingClass=idle
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 编写 TG 战报服务定时器 (每天早上 8 点触发)
|
||||||
|
cat > /etc/systemd/system/ip-sentinel-report.timer << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Timer for IP-Sentinel Telegram Report Service
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnCalendar=*-*-* 08:00:00
|
||||||
|
Unit=ip-sentinel-report.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 编写 Agent 进程守护服务
|
||||||
|
cat > /etc/systemd/system/ip-sentinel-agent-daemon.service << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=IP-Sentinel Agent Daemon Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
SyslogIdentifier=ip-sentinel
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/bin/bash ${INSTALL_DIR}/core/agent_daemon.sh
|
||||||
|
KillMode=process
|
||||||
|
User=root
|
||||||
|
CPUSchedulingPolicy=idle
|
||||||
|
IOSchedulingClass=idle
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 编写 Agent Daemon 定时器 (每 1 分钟)
|
||||||
|
cat > /etc/systemd/system/ip-sentinel-agent-daemon.timer << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Timer for IP-Sentinel Agent Daemon Service
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=10
|
||||||
|
OnUnitActiveSec=1min
|
||||||
|
Unit=ip-sentinel-agent-daemon.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 重载服务配置并启动服务
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable --now ip-sentinel-report.timer
|
||||||
|
systemctl enable --now ip-sentinel-agent-daemon.timer
|
||||||
|
# 安装时立刻启动一次边缘守护进程
|
||||||
|
systemctl start ip-sentinel-agent-daemon.service
|
||||||
|
# 强制重载服务,兼容 OTA
|
||||||
|
systemctl restart ip-sentinel-report.timer ip-sentinel-agent-daemon.timer
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "💡 未检测到 Systemd (可能是 Alpine Linux),回退到 Cron 调度模式..."
|
||||||
|
|
||||||
|
crontab -l 2>/dev/null | grep -v "ip_sentinel" > /tmp/cron_backup || true
|
||||||
|
|
||||||
|
# 核心养护模块: 每 30 分钟触发一次
|
||||||
|
echo "*/30 * * * * ${INSTALL_DIR}/core/runner.sh >/dev/null 2>&1" >> /tmp/cron_backup
|
||||||
|
# 养料更新模块: (v3.3.0升级) 每天凌晨 3 点触发,由中枢自动进行分频调度
|
||||||
|
echo "0 3 * * * ${INSTALL_DIR}/core/updater.sh >/dev/null 2>&1" >> /tmp/cron_backup
|
||||||
|
|
||||||
|
# 如果配置了联控,启动 Webhook 与战报任务
|
||||||
|
if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then
|
||||||
|
# 每天早上 8 点发送昨天的统计战报
|
||||||
|
echo "0 8 * * * ${INSTALL_DIR}/core/tg_report.sh >/dev/null 2>&1" >> /tmp/cron_backup
|
||||||
|
|
||||||
|
# 双保险守护进程看门狗
|
||||||
|
echo "@reboot nohup bash ${INSTALL_DIR}/core/agent_daemon.sh >/dev/null 2>&1 &" >> /tmp/cron_backup
|
||||||
|
echo "* * * * * nohup bash ${INSTALL_DIR}/core/agent_daemon.sh >/dev/null 2>&1 &" >> /tmp/cron_backup
|
||||||
|
|
||||||
|
# 安装时立刻启动一次边缘守护进程
|
||||||
|
nohup bash "${INSTALL_DIR}/core/agent_daemon.sh" >/dev/null 2>&1 &
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -f /tmp/cron_backup ] && crontab /tmp/cron_backup 2>/dev/null
|
||||||
|
rm -f /tmp/cron_backup
|
||||||
|
fi
|
||||||
|
|
||||||
# ================== [v3.4.0 核心: 状态机驱动的热更新路由] ==================
|
# ================== [v3.4.0 核心: 状态机驱动的热更新路由] ==================
|
||||||
if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then
|
if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then
|
||||||
|
|||||||
+28
-6
@@ -27,8 +27,30 @@ if [ -f "$CONFIG_FILE" ]; then
|
|||||||
fi
|
fi
|
||||||
echo "========================================================"
|
echo "========================================================"
|
||||||
|
|
||||||
# 1. 停止运行中的守护进程与主控模块 (涵盖所有历史版本进程)
|
# 1. 停止并删除 Systemd 服务
|
||||||
echo "[1/3] 正在终止后台守护进程与所有养护任务..."
|
echo "[1/4] 正在停止并删除 Systemd 服务..."
|
||||||
|
if command -v systemctl >/dev/null 2>&1; then
|
||||||
|
echo "[1/4] 💡 检测到 Systemd 环境,正在删除 Systemd 服务单元..."
|
||||||
|
systemctl disable --now ip-sentinel-runner.service ip-sentinel-runner.timer \
|
||||||
|
ip-sentinel-updater.service ip-sentinel-updater.timer \
|
||||||
|
ip-sentinel-report.service ip-sentinel-report.timer \
|
||||||
|
ip-sentinel-agent-daemon.service ip-sentinel-agent-daemon.timer >/dev/null 2>&1
|
||||||
|
rm -f /etc/systemd/system/ip-sentinel-runner.service
|
||||||
|
rm -f /etc/systemd/system/ip-sentinel-runner.timer
|
||||||
|
rm -f /etc/systemd/system/ip-sentinel-updater.service
|
||||||
|
rm -f /etc/systemd/system/ip-sentinel-updater.timer
|
||||||
|
rm -f /etc/systemd/system/ip-sentinel-report.service
|
||||||
|
rm -f /etc/systemd/system/ip-sentinel-report.timer
|
||||||
|
rm -f /etc/systemd/system/ip-sentinel-agent-daemon.service
|
||||||
|
rm -f /etc/systemd/system/ip-sentinel-agent-daemon.timer
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl reset-failed
|
||||||
|
else
|
||||||
|
echo "[1/4] 💡 未检测到 Systemd,跳过此步骤..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. 停止运行中的守护进程与主控模块 (涵盖所有历史版本进程)
|
||||||
|
echo "[2/4] 正在终止后台守护进程与所有养护任务..."
|
||||||
|
|
||||||
# 使用 pkill 替代传统的 pgrep | xargs,指令更短、容错率更高
|
# 使用 pkill 替代传统的 pgrep | xargs,指令更短、容错率更高
|
||||||
pkill -9 -f "tg_daemon.sh" >/dev/null 2>&1
|
pkill -9 -f "tg_daemon.sh" >/dev/null 2>&1
|
||||||
@@ -42,16 +64,16 @@ pkill -9 -f "tg_report.sh" >/dev/null 2>&1
|
|||||||
pkill -9 -f "mod_google.sh" >/dev/null 2>&1
|
pkill -9 -f "mod_google.sh" >/dev/null 2>&1
|
||||||
pkill -9 -f "mod_trust.sh" >/dev/null 2>&1
|
pkill -9 -f "mod_trust.sh" >/dev/null 2>&1
|
||||||
|
|
||||||
# 2. 清除系统定时任务 (Cron)
|
# 3. 清除系统定时任务 (Cron)
|
||||||
echo "[2/3] 正在清理系统定时任务 (Cron)..."
|
echo "[3/4] 正在清理系统定时任务 (Cron)..."
|
||||||
if crontab -l >/dev/null 2>&1; then
|
if crontab -l >/dev/null 2>&1; then
|
||||||
crontab -l | grep -v "ip_sentinel" > /tmp/cron_backup
|
crontab -l | grep -v "ip_sentinel" > /tmp/cron_backup
|
||||||
crontab /tmp/cron_backup
|
crontab /tmp/cron_backup
|
||||||
rm -f /tmp/cron_backup
|
rm -f /tmp/cron_backup
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 3. 删除所有文件、日志与临时缓存
|
# 4. 删除所有文件、日志与临时缓存
|
||||||
echo "[3/3] 正在抹除核心程序、配置文件与系统痕迹..."
|
echo "[4/4] 正在抹除核心程序、配置文件与系统痕迹..."
|
||||||
if [ -d "$INSTALL_DIR" ]; then
|
if [ -d "$INSTALL_DIR" ]; then
|
||||||
rm -rf "$INSTALL_DIR"
|
rm -rf "$INSTALL_DIR"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -269,14 +269,49 @@ echo -e "\n[4/4] 部署 TG 调度守护进程..."
|
|||||||
curl -sL "${REPO_RAW_URL}/master/tg_master.sh" -o "${MASTER_DIR}/tg_master.sh"
|
curl -sL "${REPO_RAW_URL}/master/tg_master.sh" -o "${MASTER_DIR}/tg_master.sh"
|
||||||
chmod +x "${MASTER_DIR}/tg_master.sh"
|
chmod +x "${MASTER_DIR}/tg_master.sh"
|
||||||
|
|
||||||
# 写入看门狗 Cron (容错版)
|
if command -v systemctl >/dev/null 2>&1; then
|
||||||
crontab -l 2>/dev/null | grep -v "tg_master.sh" > /tmp/cron_master || true
|
echo "💡 检测到 Systemd 环境,正在部署 Systemd 服务单元..."
|
||||||
echo "* * * * * pgrep -f tg_master.sh >/dev/null || nohup bash ${MASTER_DIR}/tg_master.sh >/dev/null 2>&1 &" >> /tmp/cron_master
|
|
||||||
[ -f /tmp/cron_master ] && crontab /tmp/cron_master 2>/dev/null
|
|
||||||
rm -f /tmp/cron_master
|
|
||||||
|
|
||||||
# 立刻启动 (追加 disown 彻底脱离终端管控,实现绝对静默)
|
# 部署 Master 战队主控调度服务
|
||||||
pgrep -f tg_master.sh >/dev/null || { nohup bash "${MASTER_DIR}/tg_master.sh" >/dev/null 2>&1 & disown 2>/dev/null; }
|
cat > /etc/systemd/system/ip-sentinel-master.service << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=IP-Sentinel Master Command Center Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
SyslogIdentifier=ip-sentinel
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/bin/bash ${MASTER_DIR}/tg_master.sh
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=${MASTER_DIR}
|
||||||
|
CPUSchedulingPolicy=idle
|
||||||
|
IOSchedulingClass=idle
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 重载服务配置并启动服务
|
||||||
|
systemctl daemon-reload
|
||||||
|
# 立刻启用 Master 战队主控调度服务
|
||||||
|
systemctl enable --now ip-sentinel-master.service
|
||||||
|
# 强制重载服务,兼容 OTA
|
||||||
|
systemctl restart ip-sentinel-master.service
|
||||||
|
else
|
||||||
|
echo "💡 未检测到 Systemd (可能是 Alpine Linux),回退到 Cron 调度模式..."
|
||||||
|
|
||||||
|
# 写入看门狗 Cron (容错版)
|
||||||
|
crontab -l 2>/dev/null | grep -v "tg_master.sh" > /tmp/cron_master || true
|
||||||
|
echo "* * * * * pgrep -f tg_master.sh >/dev/null || nohup bash ${MASTER_DIR}/tg_master.sh >/dev/null 2>&1 &" >> /tmp/cron_master
|
||||||
|
[ -f /tmp/cron_master ] && crontab /tmp/cron_master 2>/dev/null
|
||||||
|
rm -f /tmp/cron_master
|
||||||
|
|
||||||
|
# 立刻启动 (追加 disown 彻底脱离终端管控,实现绝对静默)
|
||||||
|
pgrep -f tg_master.sh >/dev/null || { nohup bash "${MASTER_DIR}/tg_master.sh" >/dev/null 2>&1 & disown 2>/dev/null; }
|
||||||
|
fi
|
||||||
|
|
||||||
# ================== [v3.2.2 优化 & v3.6.1 OTA捷报: 战报文案分流] ==================
|
# ================== [v3.2.2 优化 & v3.6.1 OTA捷报: 战报文案分流] ==================
|
||||||
echo "========================================================"
|
echo "========================================================"
|
||||||
|
|||||||
@@ -34,19 +34,32 @@ if [[ ! "$CONFIRM_DEL" =~ ^[Yy]$ ]]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 1. 停止运行中的 Master 守护进程
|
# 1. 停止并删除 Systemd 服务
|
||||||
echo "[1/3] 正在终止后台中枢调度进程..."
|
echo "[1/4] 正在停止并删除 Systemd 服务..."
|
||||||
|
if command -v systemctl >/dev/null 2>&1; then
|
||||||
|
echo "[1/4] 💡 检测到 Systemd 环境,正在删除 Systemd 服务单元..."
|
||||||
|
|
||||||
|
systemctl disable --now ip-sentinel-master.service >/dev/null 2>&1
|
||||||
|
rm -f /etc/systemd/system/ip-sentinel-master.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl reset-failed
|
||||||
|
else
|
||||||
|
echo "[1/4] 💡 未检测到 Systemd,跳过此步骤..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. 停止运行中的 Master 守护进程
|
||||||
|
echo "[2/4] 正在终止后台中枢调度进程..."
|
||||||
# [优化] 使用 pkill 替代 pgrep | xargs,指令更短、容错率更高
|
# [优化] 使用 pkill 替代 pgrep | xargs,指令更短、容错率更高
|
||||||
pkill -9 -f "tg_master.sh" >/dev/null 2>&1 || true
|
pkill -9 -f "tg_master.sh" >/dev/null 2>&1 || true
|
||||||
|
|
||||||
# 2. 清除看门狗定时任务 (Cron)
|
# 3. 清除看门狗定时任务 (Cron)
|
||||||
echo "[2/3] 正在清理系统定时任务 (Cron)..."
|
echo "[3/4] 正在清理系统定时任务 (Cron)..."
|
||||||
crontab -l 2>/dev/null | grep -v "tg_master.sh" > /tmp/cron_backup
|
crontab -l 2>/dev/null | grep -v "tg_master.sh" > /tmp/cron_backup
|
||||||
crontab /tmp/cron_backup
|
crontab /tmp/cron_backup
|
||||||
rm -f /tmp/cron_backup
|
rm -f /tmp/cron_backup
|
||||||
|
|
||||||
# 3. 删除所有文件、配置与数据库
|
# 4. 删除所有文件、配置与数据库
|
||||||
echo "[3/3] 正在抹除核心程序、配置文件与 SQLite 数据库..."
|
echo "[4/4] 正在抹除核心程序、配置文件与 SQLite 数据库..."
|
||||||
if [ -d "$MASTER_DIR" ]; then
|
if [ -d "$MASTER_DIR" ]; then
|
||||||
rm -rf "$MASTER_DIR"
|
rm -rf "$MASTER_DIR"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user