在Linux文件变化重新启动过程(Restart process on file change in

2019-07-31 08:40发布

有一个简单的解决方案(使用普通的外壳utils的,通过由大多数发行版提供了一个实用程序,或者一些简单的Python / ...脚本)重新启动时,一些文件改变的过程?

这将是很好只需拨打喜欢某物watch -cmd "./the_process -arg" deps/*

更新:与所述inotify工具一个简单的shell脚本在一起(好厉害!)适合我的需要(适用于命令W / O参数):

#!/bin/sh
while true; do
  $@ &
  PID=$!
  inotifywait $1
  kill $PID
done

Answer 1:

是的,你可以通过观看通过inotify的系统中的目录inotifywaitinotifywatch从inotify工具 。

inotifywait将退出在检测的事件。 通过选项-r递归看目录。 例如: inotifywait -r mydirectory

您还可以指定该事件观看而不是看所有事件。 只等待对文件或目录的内容改变使用选项-e modify



Answer 2:

这是对这个问题提供了答案的改善。 当一个中断脚本,运行过程应该被杀死。

#!/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


Answer 3:

退房iWatch

手表是一个文件系统实时监控程序。 它是用于检测文件系统的变化,并报告其immediately.It采用XML格式的简单的配置文件,并基于inotify的一个工具,文件更改通知系统在Linux内核中。

不是,你可以很容易地观看文件:

iwatch /path/to/file -c 'run_you_script.sh'


Answer 4:

我觉得这适合由PO要求非常非常好完整的方案:

ls *.py | entr -r python my_main.py 

又见http://eradman.com/entrproject/ ,虽然有点古怪的记录。 是的,你需要ls你想匹配文件模式,并通过管道将进入entr可执行文件。 它将运行您的程序,然后重新运行它时,任何匹配的文件的更改。



文章来源: Restart process on file change in Linux
标签: linux shell