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

如何使用inotifywait监听待创建文件的写入操作并设置超时

错误原因

你之前的命令存在两个核心错误:

  • --fromfile参数的作用是读取指定文件内的路径列表作为监控目标,不是用来指定你要监控的目标文件本身,你要监控的./hello.txt此时还不存在,自然会触发「找不到文件」的报错
  • inotify机制本身只能监控已存在的文件或目录,要监听尚未创建的文件,需要先监控它所属的父目录(也就是当前目录./),再从目录的事件中过滤目标文件名的对应事件。

正确实现方案

ubi-minimal默认没有预装inotify-tools,先执行安装:

microdnf install -y inotify-tools

直接执行以下命令即可实现需求:30秒超时,直到./hello.txt被创建且写入非空内容后自动终止:

timeout 30 bash -c '
inotifywait -m -e create,close_write ./ | while read -r dir event filename; do
  if [ "$filename" = "hello.txt" ] && [ -s ./hello.txt ]; then
    pkill -P $$ inotifywait
    exit 0
  fi
done
'

参数说明

  • timeout 30:给整个监控逻辑加30秒超时,超时后自动终止命令,符合你设置超时的需求
  • inotifywait -m -e create,close_write ./:持续监控当前已存在的工作目录的「文件创建」、「文件写入完成关闭」两类事件,不会触发路径不存在的报错
  • [ "$filename" = "hello.txt" ]:过滤出目标文件的事件
  • [ -s ./hello.txt ]:判断目标文件存在且内容非空
  • 匹配到符合要求的事件后,杀掉当前子进程内的inotifywait进程,正常退出

你可以通过命令的返回值判断最终结果:返回值为0代表成功监听到符合要求的文件,返回值为124代表超时退出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:54:03