#!/bin/bash # ========================================== # DataX 增量同步定时任务停止脚本 # 适用系统: Rocky Linux 9 / CentOS / RHEL # 功能: 移除 run_jobs_inc.sh 的 crontab 任务 # 场景: 全量同步前防止增量任务干扰 # ========================================== # 1. 基础配置 (需与 start_cron.sh 保持一致以确保匹配正确) WORK_DIR="/usr/local/datax" SCRIPT_NAME="run_jobs_inc.sh" SCRIPT_PATH="$WORK_DIR/$SCRIPT_NAME" # 2. 检查任务是否存在 echo "正在检查定时任务..." # 使用 grep 查找包含脚本路径的行 EXISTING_JOB=$(crontab -l 2>/dev/null | grep "$SCRIPT_PATH") if [ -z "$EXISTING_JOB" ]; then echo "----------------------------------------" echo "提示: 未发现该脚本的定时任务,无需停止。" echo "目标脚本: $SCRIPT_PATH" echo "----------------------------------------" exit 0 fi echo "发现正在运行的定时任务:" echo " $EXISTING_JOB" echo "----------------------------------------" # 3. 移除任务 echo "正在移除任务..." # 备份当前的 crontab BACKUP_FILE="/tmp/crontab_backup_$(date +%Y%m%d_%H%M%S).txt" crontab -l > "$BACKUP_FILE" 2>/dev/null echo "已备份当前 Crontab 到: $BACKUP_FILE" # 核心逻辑: 移除包含脚本路径的行 # grep -v "$SCRIPT_PATH" : 排除包含脚本路径的行 # crontab - : 将过滤后的内容重新写入 crontab crontab -l 2>/dev/null | grep -v "$SCRIPT_PATH" | crontab - # 4. 验证结果 REMAINING_JOB=$(crontab -l 2>/dev/null | grep "$SCRIPT_PATH") if [ -z "$REMAINING_JOB" ]; then echo "----------------------------------------" echo "✅ 增量同步定时任务已成功停止 (移除)!" echo "----------------------------------------" echo "当前用户的 Crontab 列表:" crontab -l echo "----------------------------------------" echo "现在您可以安全地执行全量同步操作了。" else echo "❌ 停止失败,任务仍然存在。请尝试手动编辑: crontab -e" exit 1 fi