#!/bin/bash # ========================================== # DataX 增量同步定时任务停止脚本 # 适用系统: Rocky Linux 9 / CentOS / RHEL # 功能: 移除 run_jobs_inc.sh 的 crontab 任务 # 场景: 全量同步前防止增量任务干扰 # ========================================== # 1. 基础配置 TARGET=$1 if [ "$TARGET" != "doris" ] && [ "$TARGET" != "mysql" ]; then echo "使用方法: $0 [doris|mysql]" exit 1 fi WORK_DIR="/usr/local/datax" SCRIPT_NAME="run_jobs_inc.sh" SCRIPT_PATH="$WORK_DIR/$SCRIPT_NAME" # 2. 检查任务是否存在 echo "正在检查 $TARGET 定时任务..." # 使用脚本路径和目标参数匹配 EXISTING_JOB=$(crontab -l 2>/dev/null | grep "$SCRIPT_PATH $TARGET") if [ -z "$EXISTING_JOB" ]; then echo "----------------------------------------" echo "提示: 未发现 $TARGET 的定时任务,无需停止。" echo "目标脚本: $SCRIPT_PATH $TARGET" echo "----------------------------------------" exit 0 fi echo "发现正在运行的定时任务:" echo " $EXISTING_JOB" echo "----------------------------------------" # 3. 移除任务 echo "正在移除 $TARGET 任务..." # 备份当前的 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" # 核心逻辑: 移除包含脚本路径和目标的行 crontab -l 2>/dev/null | grep -v "$SCRIPT_PATH $TARGET" | crontab - # 4. 验证结果 REMAINING_JOB=$(crontab -l 2>/dev/null | grep "$SCRIPT_PATH $TARGET") if [ -z "$REMAINING_JOB" ]; then echo "----------------------------------------" echo "✅ 增量同步定时任务已成功停止 (移除)!" echo "----------------------------------------" echo "当前用户的 Crontab 列表:" crontab -l echo "----------------------------------------" echo "现在您可以安全地执行全量同步操作了。" else echo "❌ 停止失败,任务仍然存在。请尝试手动编辑: crontab -e" exit 1 fi