我希望脚本休眠,除非修改/删除某个文件(或者在某个目录中创建的文件,或者...)。这可以通过某种优雅的方式实现吗?我想到的最简单的事情是一个循环,在再次检查状态之前休眠一段时间,但也许有更优雅的方法?
答案1
在Linux上,您可以使用内核的inotify
功能。可以在那里找到脚本编写工具:inotify 工具。
维基百科的使用示例:
#!/bin/sh
EVENT=$(inotifywait --format '%e' ~/file1) # blocking without looping
[ $? != 0 ] && exit
[ "$EVENT" = "MODIFY" ] && echo 'file modified!'
[ "$EVENT" = "DELETE_SELF" ] && echo 'file deleted!'
# etc...
答案2
有一个API叫做inotify对于 C 程序员。
有一些工具使用它,例如因克朗和inotify 工具。
答案3
确实有:进入(1)当文件更改时将运行任意命令,并且还提供用于重新启动应用程序服务器的自动重新加载选项。
编辑:一些例子
如果源文件更改则重新构建
$ find *.c | entr make
如果文件发生更改,启动并自动重新加载测试服务器
$ ls *.py | entr -r python main.py
提供参数+/path/to/fifo
允许通过指示entr
将更改为命名管道的每个文件的名称写入更复杂的脚本。以下命令将当前目录中的 Markdown 文件编辑后转换为 HTML
$ ls *.md | entr +/tmp/notify &
$ while read F
> do
> markdown2html $F
> done < /tmp/notify