Files
aiData/DataX/start_cron_inc.sh
HuangHai e08b7af675 'commit'
2026-02-06 07:42:45 +08:00

55 lines
1.7 KiB
Bash

#!/bin/bash
TARGET=$1
if [ -z "$TARGET" ]; then
echo "用法: $0 <target>"
echo "请指定同步目标:"
echo " doris - 启动 Doris 增量同步定时任务"
echo " mysql - 启动 MySQL 增量同步定时任务"
exit 1
fi
if [ "$TARGET" != "doris" ] && [ "$TARGET" != "mysql" ]; then
echo "错误: 请指定目标 (doris 或 mysql)"
exit 1
fi
WORK_DIR="/usr/local/datax"
SCRIPT_NAME="run_jobs_inc.sh"
SCRIPT_PATH="$WORK_DIR/$SCRIPT_NAME"
LOG_FILE="$WORK_DIR/logs/datax_inc_${TARGET}_cron.log"
export PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
[ -f /etc/profile ] && . /etc/profile
[ -f ~/.bash_profile ] && . ~/.bash_profile
[ -f ~/.profile ] && . ~/.profile
echo "正在检查环境..."
if [ ! -d "$WORK_DIR" ]; then
echo "错误: 工作目录 $WORK_DIR 不存在"; exit 1
fi
if [ ! -f "$SCRIPT_PATH" ]; then
echo "错误: 执行脚本 $SCRIPT_PATH 不存在"; exit 1
fi
if [ ! -d "$(dirname "$LOG_FILE")" ]; then
mkdir -p "$(dirname "$LOG_FILE")"
fi
chmod +x "$SCRIPT_PATH"
# 构造 cron 命令,注意转义和参数传递
# 修改为每 5 秒运行一次 (通过循环实现,因为 crontab 最小粒度是分钟)
CRON_CMD="* * * * * for i in {1..12}; do /bin/bash $SCRIPT_PATH $TARGET >> $LOG_FILE 2>&1; sleep 5; done"
# 查找已存在的任务 (匹配脚本路径和目标参数)
EXISTING_JOB=$(crontab -l 2>/dev/null | grep "$SCRIPT_PATH $TARGET")
if [ -n "$EXISTING_JOB" ]; then
echo "提示: 该任务已存在,将先删除旧任务再重新添加..."
crontab -l 2>/dev/null | grep -v "$SCRIPT_PATH $TARGET" | crontab -
fi
(crontab -l 2>/dev/null; echo "$CRON_CMD") | crontab -
echo "$TARGET 增量定时任务设置成功"
crontab -l