entr - 监视一个目录里的文件是否发生改变,在改变的时候运行指定命令

2020-11-28 01:57:41 +08:00
 Livid
https://github.com/eradman/entr

挺好用的一个小工具。不知道 Windows 上是否有类似的?
7317 次点击
所在节点    Linux
36 条回复
shuax
2020-11-28 10:53:33 +08:00
::ReadDirectoryChangesW(dir, &notify, sizeof(notify), TRUE, FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME, &dwBytes, &overlapped, NULL);

主要就这一个 API
billzhuang
2020-11-28 11:11:40 +08:00
这类 filewatcher 我记得都有个头痛的问题,就是如果监控的跟目录被删除了,再新建就不会再监控了,要手动处理
menyakun
2020-11-28 15:56:54 +08:00
我在 mac 和 linux 下用的是 fswatch,我看官方 readme 里面也有 windows 的,不知道行不行
ysmood
2020-11-29 00:50:27 +08:00
@b00tyhunt3r @loading 目前来讲 poll 是最稳定的方式,类似 FileSystemWatcher,fsnotify 之类的都有诸多兼容问题,比如 fsnotify 自己都说对 mac 支持不好。要是有人能有更好的解决方案我倒是很想学习下。
guochao
2020-11-29 21:07:16 +08:00
Windows 下面有个 Everything 工具,推荐。其中的原理是读取 NTFS 的 USN 日志。我胡乱搜了一下: https://blog.csdn.net/kaooo/article/details/8298537

对于 Linux 来说内核的 inotify 可以保证每个订阅的修改都通知到程序,Mac/BSD 的大概是 kqueue+fsevents
raaaaaar
2020-11-30 07:16:00 +08:00
@zhuzhibin #1 监控目录变动然后自动更新部署项目?
Mithril
2020-11-30 07:40:48 +08:00
@elfive 目前用 FileSystemWatcher 没发现这个问题,不要在消息响应里面写太多东西,直接接到你自己的消息队列里再处理就可以了。
我基本上每次弄进去几千上万的小文件没见出过问题。
abersheeran
2020-11-30 09:07:40 +08:00
Python 有一个 watchdog 的模块,它自带的命令就可以做到你说的这个。如果有更复杂的需求,你甚至可以写几行 Python 代码来解决。并且,Mac 、Linux 、Windows 都支持。
wangdk23411
2020-11-30 10:15:33 +08:00
不错,可以放在 ftp 流程后面做分类处理
q197
2020-11-30 10:53:07 +08:00
uwp 也有个函数
nnnToTnnn
2020-11-30 11:11:23 +08:00
@Livid 可以用 cygwin 来编译这个程序。
nnnToTnnn
2020-11-30 11:13:05 +08:00
QT 有一个 QFileSystemWatcher 感觉也挺方便的。
digimoon
2020-11-30 11:15:03 +08:00
linux 上我用 inotify,但是这个不能在挂载的网络目录用例如 smb,这个能解决么
nnnToTnnn
2020-11-30 11:15:50 +08:00
@nnnToTnnn 32L 我猜的,cygwin 可以编译 linux 的程序,但是兼容性上面还得要自己试试
LDa
2020-12-01 04:50:57 +08:00
插个眼,明天下午来收割方案
ob
2020-12-10 22:20:57 +08:00
NewFileGo 可以一试:
http://www.joejoesoft.com/vcms/170/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/730030

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX