gpt4 book ai didi

shell - 使 inotifywait 将多个文件更新合并为一个?

转载 作者:行者123 更新时间:2023-12-04 14:47:55 24 4
gpt4 key购买 nike

我有一个包含 Sphinx 文档的文件夹,我用 inotifywait 观看(来自 inotify-tools)。该脚本重新构建 html 和 singlehtml 并刷新 Chrome。

#!/bin/sh
inotifywait -mr source --exclude _build -e close_write -e create -e delete -e move | while read file event; do
make html singlehtml
xdotool search --name Chromium key --window %@ F5
done

当我保存单个文件时,这很好用。然而,当我 hg update到旧版本或在 source 中粘贴多个文件文件夹,它会为每个文件触发脚本。

是否有一个简单的解决方法(无需编写自定义 python 脚本——我可以这样做)让它在触发脚本之前等待几分之一秒?

最佳答案

我制作了一个更复杂的 shell 脚本并将其发布在 the article :

inotifywait -mr source --exclude _build -e close_write -e create -e delete -e move --format '%w %e %T' --timefmt '%H%M%S' | while read file event tm; do
current=$(date +'%H%M%S')
delta=`expr $current - $tm`
if [ $delta -lt 2 -a $delta -gt -2 ] ; then
sleep 1 # sleep 1 set to let file operations end
make html singlehtml
xdotool search --name Chromium key --window %@ F5
fi
done

它使 inotifywait不仅记录文件名和操作,还记录时间戳。该脚本将时间戳与当前 unixtime 进行比较,如果增量小于 2 秒,则运行 make html .但在此之前它会休眠 1 秒让文件操作结束。对于下一个修改过的文件,时间戳将是旧的,增量将超过 2 秒,并且什么也不做。

我发现这种方式是 CPU 消耗最少且最可靠的方式。

我还尝试运行一个简单的 Python 脚本,但这意味着如果我将像 jQueryUI 这样大的东西粘贴到文件夹中,则会产生一千个进程,然后变成僵尸。

关于shell - 使 inotifywait 将多个文件更新合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11930442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com