有一个简单的解决方案(使用普通的外壳utils的,通过由大多数发行版提供了一个实用程序,或者一些简单的Python / ...脚本)重新启动时,一些文件改变的过程?
这将是很好只需拨打喜欢某物watch -cmd "./the_process -arg" deps/*
。
更新:与所述inotify工具一个简单的shell脚本在一起(好厉害!)适合我的需要(适用于命令W / O参数):
#!/bin/sh
while true; do
$@ &
PID=$!
inotifywait $1
kill $PID
done
是的,你可以通过观看通过inotify的系统中的目录inotifywait
或inotifywatch
从inotify工具 。
inotifywait
将退出在检测的事件。 通过选项-r
递归看目录。 例如: inotifywait -r mydirectory
。
您还可以指定该事件观看而不是看所有事件。 只等待对文件或目录的内容改变使用选项-e modify
。
这是对这个问题提供了答案的改善。 当一个中断脚本,运行过程应该被杀死。
#!/bin/sh
sigint_handler()
{
kill $PID
exit
}
trap sigint_handler SIGINT
while true; do
$@ &
PID=$!
inotifywait -e modify -e move -e create -e delete -e attrib -r `pwd`
kill $PID
done
退房iWatch
:
手表是一个文件系统实时监控程序。 它是用于检测文件系统的变化,并报告其immediately.It采用XML格式的简单的配置文件,并基于inotify的一个工具,文件更改通知系统在Linux内核中。
不是,你可以很容易地观看文件:
iwatch /path/to/file -c 'run_you_script.sh'
我觉得这适合由PO要求非常非常好完整的方案:
ls *.py | entr -r python my_main.py
又见http://eradman.com/entrproject/ ,虽然有点古怪的记录。 是的,你需要ls
你想匹配文件模式,并通过管道将进入entr
可执行文件。 它将运行您的程序,然后重新运行它时,任何匹配的文件的更改。