是否有一个简单的解决方案(使用常见的shell utils,通过大多数发行版提供的util,或者一些简单的python/...脚本)在某些文件发生变化时重启进程?
简单地打电话就好了watch -cmd "./the_process -arg" deps/*.
更新: 一个简单的shell脚本和提议的inotify-tools(很好!)符合我的需求(适用于没有参数的命令):
#!/bin/sh
while true; do
$@ &
PID=$!
inotifywait $1
kill $PID
done
Run Code Online (Sandbox Code Playgroud)
Gar*_*rwe 11
这是对问题中提供的答案的改进.当一个人中断脚本时,应该终止运行过程.
#!/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
Run Code Online (Sandbox Code Playgroud)
退房iWatch:
Watch是一个实时文件系统监控程序.它是一个用于检测文件系统变化并立即报告它的工具.它使用XML格式的简单配置文件,并基于inotify,Linux内核中的文件更改通知系统.
比,你可以轻松地看文件:
iwatch /path/to/file -c 'run_you_script.sh'
Run Code Online (Sandbox Code Playgroud)
我发现这非常适合 PO 要求的完整场景:
ls *.py | entr -r python my_main.py
Run Code Online (Sandbox Code Playgroud)
另请参阅http://eradman.com/entrproject/,尽管记录有点奇怪。是的,您需要ls匹配您想要匹配的文件模式,并将其通过管道传输到entr可执行文件中。它将运行您的程序并在任何匹配的文件发生更改时重新运行它。
| 归档时间: |
|
| 查看次数: |
7588 次 |
| 最近记录: |