杀死兄弟姐妹的过程

时间:2012-11-01 19:46:12

标签: bash

我想要一个脚本:

  • 触发make 2&>1 | less -R
  • 收听文件夹中的每个更改(使用inotifywait -R

修改文件夹后,脚本必须终止less进程并重新启动。

我不确定这样做的正确方法(允许脚本的两个分支并行运行+允许观察工作知道less作业的pid,因为后者有在前台)。

2 个答案:

答案 0 :(得分:2)

如果您只是想在每次更改内容时触发自动重新编译,那么您可以尝试以下操作:

while inotifywait -qqr /dir/to/watch; do
   make | less
done

我意识到每次重新编译时,此解决方案都不会删除less命令

上述情况稍有不同就是在完成后减少:

while inotifywait -qqr /dir/to/watch; do
   make
done | less

此版本将立即触发重新编译(在第一个make完成之后),但它将要求您翻阅所有较少的输出(并且不要用q终止它)

这是您可能想要使用的另一种变体。在此版本中,如果更改代码,将终止正在进行的make并重新启动。但是,输出没有屏幕分页(这很难与后台进程结合):

BGPID=0
while inotifywait -qqr /dir/to/watch; do
   [ "$BGPID" -gt 1 ] && kill $BGPID
   (make | tail -f)&
   BGPID=$!
done

答案 1 :(得分:1)

而不是像下面那样少尝试尾巴。

make命令:

make 2&>1 /output/file

和另一个终端的tail命令:

tail -f /output/file

这应该会显示所有变化的实时流。