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

如何通过终端精准检测文件的更新频率?

检测文件更新频率的终端方法

下面是几个比watch + ls更可靠、精度更高的方案:

1. 用inotifywait实时监听(推荐)

这是内核级的文件事件监听工具,能精准捕捉每次文件修改,不会因为检测间隔错过更新,还能输出纳秒级时间戳。

首先确保安装了inotify-tools包(Debian/Ubuntu用apt install inotify-tools,CentOS用yum install inotify-tools),然后执行:

inotifywait -m -e modify --timefmt '%Y-%m-%d %H:%M:%S.%N' --format '%T' /path/to/target/file

参数说明:

  • -m:持续监听,不触发一次就退出
  • -e modify:只监听文件修改事件
  • --timefmt:指定时间输出格式,这里包含纳秒,精度拉满
  • --format:只输出时间戳,让结果更简洁

如果想直接计算更新间隔,把输出用awk处理:

inotifywait -m -e modify --timefmt '%s.%N' --format '%T' /path/to/target/file | awk 'BEGIN { prev = 0 } { if (prev != 0) printf "更新间隔:%.6f 秒\n", $1 - prev; prev = $1 }'

这样每次文件更新时,会直接打印和上一次更新的时间差,方便统计频率。

2. 用stat+循环轮询

如果系统没有inotifywait,用stat命令可以获取文件的高精度修改时间,配合循环轮询实现检测:

prev_mtime=$(stat -c %Y.%N /path/to/target/file)
while true; do
    curr_mtime=$(stat -c %Y.%N /path/to/target/file)
    if [ "$curr_mtime" != "$prev_mtime" ]; then
        echo "更新时间:$(date +'%Y-%m-%d %H:%M:%S.%N')"
        prev_mtime=$curr_mtime
    fi
    sleep 0.01  # 轮询间隔,可根据需求调整,最小能到毫秒级
done

stat -c %Y.%N会输出文件修改时间的秒数+纳秒数,对比前后值就能判断文件是否更新,sleep间隔可以调得比watch更小,减少遗漏概率。

内容的提问来源于stack exchange,提问作者Yi Qiang Ji

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:02:25