You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在Control-M中设计单个文件监视作业监控5个不同路径的文件?

解决单个Control-M File Watcher监控多路径特定文件的方案

方案1:自定义脚本作为核心监控逻辑

Control-M的File Watcher支持调用外部脚本执行自定义检查,你可以编写shell/PowerShell脚本批量验证5个目标文件的到达状态,通过退出码告知Control-M结果:

  • 脚本逻辑:逐个检查目标文件的存在性(可选添加完整性校验),只要有一个未达标就返回非0退出码,全部满足则返回0
  • 在Control-M作业配置中,将监控类型设为脚本,指定脚本路径并设置执行频率
  • 示例shell脚本:
#!/bin/bash
# 定义所有待监控的文件路径
TARGET_FILES=(
  "/data/source1/file_a.txt"
  "/backup/source2/file_b.csv"
  "/app/logs/source3/file_c.log"
  "/tmp/source4/file_d.dat"
  "/archive/source5/file_e.json"
)

# 循环检查每个文件
for FILE in "${TARGET_FILES[@]}"
do
  # 检查文件是否存在
  if [ ! -f "$FILE" ]; then
    echo "Missing file: $FILE"
    exit 1
  fi
  # 可选:校验文件是否写入完成(两次大小检查一致)
  SIZE_1=$(stat -c%s "$FILE")
  sleep 5
  SIZE_2=$(stat -c%s "$FILE")
  if [ "$SIZE_1" -ne "$SIZE_2" ]; then
    echo "File still being written: $FILE"
    exit 1
  fi
done

echo "All target files are ready"
exit 0
  • 注意:给Control-M执行用户配置脚本的执行权限,确保脚本路径在代理服务器可访问范围内

方案2:基于文件列表的批量监控

Control-M支持监控一个包含所有目标路径的列表文件,通过触发脚本完成批量检查:

  1. 创建列表文件/controlm/watch_list.txt,每行写入一个目标文件的完整路径:
/data/source1/file_a.txt
/backup/source2/file_b.csv
/app/logs/source3/file_c.log
/tmp/source4/file_d.dat
/archive/source5/file_e.json
  1. 在Control-M File Watcher中配置监控该列表文件,设置触发后执行脚本,脚本读取列表内容并逐一验证文件状态
  2. 优势:后续修改监控文件时,只需更新列表文件,无需调整Control-M作业配置

方案3:作业组+依赖的伪单作业体验

如果脚本方案不适用,可通过作业组实现逻辑上的“单监控单元”:

  • 创建5个独立的File Watcher作业,分别对应5个目标文件,完成后标记为成功
  • 添加一个汇总作业,设置依赖为上述5个作业全部成功,汇总作业成功即代表所有文件已到达
  • 可通过Control-M的作业组功能将这些作业打包管理,对外呈现为一个整体监控任务

内容的提问来源于stack exchange,提问作者azure

火山引擎 最新活动