Files
aiData/DataX/stop_cron.sh

65 lines
2.0 KiB
Bash
Raw Normal View History

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