inotifywait 不断中止

inotifywait keeps aborting

我有这个小脚本:

#!/bin/bash
echo "every time script  is saved, run the script"
while inotifywait -e modify -qq ; do
   
done

这对我在过去几年编写脚本(在 tmux 左窗格中编辑文件,在 tmux 右窗格中自动执行脚本)时非常有帮助。但是现在...

我有一个类似的脚本:

#!/bin/bash
while inotifywait -e modify -qq file.py; do
  python file.py stuff
done

当我保存文件时它就中止了。通过“中止”我的意思是,而不是 运行 python file.py stuff 并显示结果它只是 returns 我到命令提示符。

运行 命令 python file.py stuff 工作正常:文件仅打印提供给脚本的第一个参数,在本例中为“stuff”。但是这个 inotifywait 命令一直在中止。

为什么?如何排除故障?

man inotifywait 给出了以下示例,它与我使用它的方式几乎相同(我只是传递加法 -qq 标志):

#!/bin/sh
while inotifywait -e modify /var/log/messages; do
  if tail -n1 /var/log/messages | grep httpd; then
    kdialog --msgbox "Apache needs love!"
  fi
done

因为我在做几乎相同的事情,所以我不知道为什么我应该尝试以不同的方式调用 inotifywait,就像网络上的一些帖子所描述的那样(但我已经尝试了其中的几个,但没有成功)。

我在 tmux 环境中执行此操作,但我不知道这会如何影响它。我不知道要调查什么或如何调试它。

有什么想法吗?

inotifywait -e modify -qq 没有中止,它只是 returns 当事件不是 modify.

时出错

试试这个:

#!/usr/bin/env bash
inotifywait -e modify -m file.py |\
while read; do
  python file.py stuff
done

使用自定义 vimrc 时会出现问题...如果 file.pyvim -u .config/vimrc file.py 那样编辑会导致 inotifywait 脚本中止。

为什么 发生这种情况是未知的:using `vim -u` to specify custom vimrc causes inotifywait script to abort