2013-06-03 35 views
1

比較在OSX上的FSEvents,默認情況下,在觸發事件前收集超過1秒的FS事件(超時可配置)。Linux上的inotifywait是否允許在超時期限內收集事件?

這樣做的好處是可以將一系列文件系統更改收集到單個事件中(因此腳本運行得不會超出需要),但代價是延遲。

例如,在Vim中保存文件會修改許多臨時文件(它往往會刪除緩衝區文件,更新撤銷文件,並且除了文件本身外,還會創建並擦除名爲4193的測試文件)。在使用此API的小工具(如我的分支fswatch)的OSX上,所有這些都可以合併爲一個「批處理事件」,而使用inotifywait -m指定的所有事件都以單獨的行在流中傳遞,無需外部處理即可分組。

我很確定解決方案是隻是包裝它,並做這個處理,但我希望有一個隱藏的功能來指定一個像FSEvents允許的超時。

回答

2

我真的開始相信這種事情不應該在inotify的功能範圍之內。

我還沒有找到適當的解決方案,但它在我看來,像是有一種優雅的方式來做到這一點。這是我的出發點(如果一秒鐘內什麼都看不到,我想有東西積累超過一秒)

目前正在對此進行一些測試。這裏有一些測試腳本,我工作得很好。

group=0 
(for val in {1..10}; do echo "$RANDOM/10000" | bc | xargs sleep; echo $val; done) | while true; do while read -t 1 line; do echo "read $group $line"; done; ((group++)); done 
+1

'inotify'不支持您描述的功能,您應該自己在應用程序層實現它。 – zeekvfu

相關問題