无Bash经验,需实现监控目录触发Curl请求的Filewatcher脚本
监控指定文件并触发Curl请求的Bash脚本
下面是完全符合需求的脚本,针对无Bash经验的用户做了详细注释:
#!/bin/bash # 配置监控参数 MONITOR_DIR="C:/directory/" # 要监控的目标目录 TARGET_FILE="FILE_RECEIVED.CSV" # 需要触发动作的文件名 CURL_BASE_URL="http://localhost:3030/load/process-file" # 无限循环持续监控 while true; do # 检查目标文件是否存在 if [ -f "${MONITOR_DIR}${TARGET_FILE}" ]; then echo "找到文件 ${TARGET_FILE},执行请求..." # 拼接完整URL并发起GET请求 curl -X GET "${CURL_BASE_URL}?filename=${TARGET_FILE}&filePathFile=${MONITOR_DIR}" # (可选)执行后重命名文件,避免重复触发 # mv "${MONITOR_DIR}${TARGET_FILE}" "${MONITOR_DIR}${TARGET_FILE}_$(date +%Y%m%d%H%M%S).processed" echo -e "\n请求执行完成" # 暂停10秒再继续监控,防止短时间内重复触发 sleep 10 fi # 每隔2秒检查一次目录,可根据需要调整频率 sleep 2 done
使用步骤
- 把代码复制到文本编辑器,保存为
file_watcher.sh - 打开Bash终端(比如Git Bash、WSL、Linux终端),进入脚本所在目录
- 给脚本加执行权限:
chmod +x file_watcher.sh - 运行脚本:
./file_watcher.sh
关键细节说明
- 路径兼容:Bash中
C:/directory/和/c/directory/两种写法都能识别,选自己习惯的就行 - 重复触发问题:脚本里的可选重命名代码可以把已处理的文件改名,避免每次检查都触发请求,按需开启
- 资源占用:
sleep命令控制检查间隔,间隔太短会占用更多CPU,太长会延迟检测,根据实际情况调整 - 后台运行:如果需要脚本在后台持续运行,可以用
nohup ./file_watcher.sh &,输出会存在nohup.out文件里
内容的提问来源于stack exchange,提问作者CatDev
相关产品推荐
相关产品推荐

