You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

incron对新文件夹内的文件写入无响应 该如何修复?

问题原因

incron 本身无递归目录监控能力,你当前配置的规则仅作用于/root/var/这一级目录,子目录下的文件写入事件不会被触发。

修复方案

方案1:扩展incron规则实现动态递归监控

  • 先批量添加现有子目录的监控规则,切换到root用户执行如下命令:
find /root/var/ -type d | xargs -I {} echo "{} IN_CLOSE_WRITE curl \"https://api.telegram.org/.......\"" >> /var/spool/incron/root
  • 新增一条目录创建事件的监听规则,后续新建的子目录会自动加入监控:
/root/var/ IN_CREATE,IN_ISDIR echo "\$@/\$# IN_CLOSE_WRITE curl \"https://api.telegram.org/.......\"" >> /var/spool/incron/root && systemctl reload incron
  • 所有规则修改完成后,执行systemctl restart incron重启服务生效。

方案2:改用inotifywait实现递归监控

如果你不想维护多条incron规则,可以直接用inotifywait工具写个常驻后台的脚本,原生支持递归监听:

  • 创建监控脚本monitor.sh,内容如下:
#!/bin/bash
# 未安装inotify-tools先执行对应安装命令
# Debian/Ubuntu: apt install inotify-tools -y
# CentOS/RHEL: yum install inotify-tools -y
inotifywait -mrq -e close_write /root/var/ | while read dir event file
do
    # 替换为你自己的Telegram通知接口地址
    curl "https://api.telegram.org/......."
done
  • 给脚本添加执行权限:chmod +x monitor.sh
  • 后台运行脚本即可:nohup ./monitor.sh &
注意事项
  • 两种方案都需要确保运行身份有/root/var/目录的读取权限,推荐用root用户配置运行。
  • 如果配置后规则仍不生效,可以执行tail -f /var/log/syslog(Debian/Ubuntu)或tail -f /var/log/messages(CentOS/RHEL)查看incron的运行日志排查问题。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:54:03