也许 inotify-tools 是一种选择。
我不知道它们是否也存在于 MacOS X 下。Linux 用户可以使用yum install inotify-tools
(RedHat) 或aptitude install inotify-tools
(Debian/Ubuntu) 安装它。
然后你可以使用inotifywait
:
while [ true ]; do
inotifywait -e modify test >/dev/null 2>&1
echo "Do something"
done
要将它带入背景,请以这种方式包装它:
{ while [ true ]; do inotifywait -e modify test >/dev/null 2>&1 ; echo "Do something" ; done }& echo $! > ~/inotitfy.something.pid
它将无限循环并运行inotifywait
,如果事件发生,它将退出-e
,然后echo
在此示例中运行。通过创建后台进程后&
。后台进程 ID 将通过管道传输到~/inotitfy.something.pid
.
通过以这种方式终止进程来停止它:
kill -15 `echo ~/inotitfy.something.pid`
您还可以将第一个变体放入screen。
请注意,也可能有一个inotifyexec
(如在 Debian Squeeze 上),但并不是一直对我有用,并且并非在所有发行版上都可用(所以我总是使用我自制的方法)。