标签: inotifywait

无法在Amazon EC2上安装inotify

我有一个AWS EC2实例,想要安装inotify-tools.我通过执行命令添加了存储库:rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm然后执行yum install inotify-tools但得到没有包inotify工具可用.

请帮忙

yum amazon-ec2 inotify inotify-tools inotifywait

11
推荐指数
1
解决办法
5785
查看次数

如何使用FSWatch在Mac OSX上观看文件更改?

我正在尝试使用fswatch从linux bash脚本翻译以下行,以便能够在Mac OSX上运行它:

inotifywait -r -m 'myfolder/' | while read MODFILE
do
    echo "something"
done
Run Code Online (Sandbox Code Playgroud)

由于inotifywait在Mac OSX上不起作用,我想用第一行代替FSWatch.尽管README引用了fswatch手册页,但它没有提供链接,并且在互联网上搜索并没有给我任何东西.所以我试着搞砸了一下.

我创建了一个名为的文件夹testfswatch/,我尝试在父文件夹中运行以下命令,然后在文件夹中添加和更改文件testfswatch/:

fswatch -o testfswatch/ | echo "LALA"
fswatch -o testfswatch/ | someSimpleProgram
fswatch -o testfswatch/ | xargs -n1 -I{} echo "LALA"
fswatch -o testfswatch/ | xargs -n1 -I{} ./someExecutable
fswatch -o testfswatch/ | xargs -n1 echo "LALA"
fswatch -o testfswatch/ | xargs -n1 someExecutable
// And more variations of the above
Run Code Online (Sandbox Code Playgroud)

当我在tesfswatch/文件夹中更改或添加文件时,这些命令似乎都没有做任何事情.

有谁知道我在这里做错了什么?欢迎所有提示!

macos monitor sh inotifywait fswatch

8
推荐指数
2
解决办法
1万
查看次数

docker-container中的inotifywait不会注册更改

我有一个在docker-container中运行的脚本,它通过侦听目录中的更改inotifywait.该目录通过安装到主机系统docker -v.

出于某种原因,当更改此目录中的文件时,不会触发inotifywait.

这是有问题的脚本行

inotifywait -e create -e modify -e delete -e move  /etc/nginx/sites-enabled
Run Code Online (Sandbox Code Playgroud)

容器就像这样启动(通过无花果)

web:
  build: .
  ports:
   - "80:80"
  volumes:
   - ./conf:/etc/nginx/sites-enabled
Run Code Online (Sandbox Code Playgroud)

当我启动设置时fig up,执行脚本,但安装的卷中的更改不会触发inotify-barrier.

inotify inotifywait docker boot2docker

8
推荐指数
1
解决办法
2783
查看次数

如何中断或去抖inotifywait循环?

我有一个小脚本,用于监视文件的变化inotifywait.当某些内容发生变化时,会通过一个过程(编译,压缩,重组等)发送一批文件,这些过程大约需要十秒钟才能运行.

请考虑以下示例:

touch oli-test
inotifywait -mq oli-test | while read EV; do sleep 5; echo "$EV"; done
Run Code Online (Sandbox Code Playgroud)

如果你touch oli-test在另一个终端上运行几次,你会看到每个循环在它继续前完成.这种情况对我来说非常真实.如果我忘记在文件处理过程中忘记保存文件,或者发现错误,那么事件就会叠加,我等待几分钟.

令我感到震惊的是,有两种技术可以使这个工作流程更加客观.我不确定什么是最简单或最好的,所以我提出了两个:

  1. 中断以前的运行,并立即重启.脚本化进程目前只是一组内联命令.我可以将它们分解为Bash函数,我并不是想要将它们打破得更远.

  2. 对等待处理的事物列表进行去抖动,以便如果一次发生五个事件(或者它已经处理过),它只会再次运行.

(或两者......因为我确定有两种情况都有用的情况)

我也对不同的方法持开放态度,inotifywait但他们需要给我相同的结果并在Ubuntu上工作.

bash interrupt inotify debouncing inotifywait

7
推荐指数
2
解决办法
1022
查看次数

在将docx转换为PDF时,inotifywait触发事件两次

我有shell脚本与inotifwait设置如下:

inotifywait -r  -e close_write,moved_to  -m "<path>/upload" --format '%f##@@##%e##@@##%w'
Run Code Online (Sandbox Code Playgroud)

有一些docx文件驻留在监视目录中,一些脚本通过以下命令将docx转换为PDF:

soffice --headless --convert-to pdf:writer_pdf_Export <path>/upload/somedoc.docx --outdir  <path>/upload/
Run Code Online (Sandbox Code Playgroud)

一旦生成PDF,就会以某种方式触发事件两次.参赛作品如下:

somedoc.pdf##@@##CLOSE_WRITE,CLOSE##@@##<path>/upload/
somedoc.pdf##@@##CLOSE_WRITE,CLOSE##@@##<path>/upload/
Run Code Online (Sandbox Code Playgroud)

还有什么不对吗?

问候

shell inotify inotifywait

6
推荐指数
1
解决办法
383
查看次数

如何只监听inotifywait中的特定事件?

有人可以解释为什么inotifywait当我排除打开时仍然报告有关打开的文件吗?

mkdir /tmp/a

inotifywait --exclude acess,attrib,close_write,close_nowrite,close,open,moved_to,moved_from,move,delete,delete_self,unmount -r -m /tmp/a/

touch /tmp/a/test
/tmp/a/ OPEN test
/tmp/a/ CLOSE_NOWRITE,CLOSE test
Run Code Online (Sandbox Code Playgroud)

我感兴趣的是是否创建了新文件或修改了当前文件。

我使用 CentOS 7,如果这有什么改变的话。

linux bash centos inotify inotifywait

6
推荐指数
1
解决办法
2761
查看次数

inotifywait shell 脚本作为守护进程运行

我有一个脚本来监视目录(递归)并在文件更改时执行命令。当监控标志如下使用时,这是正常工作的:

#!/bin/sh

inotifywait -m -r /path/to/directory |
    while read path action file; do
            if [ <perform a check> ]
            then
                my_command
            fi
    done
Run Code Online (Sandbox Code Playgroud)

但是,我想在启动时和后台运行它,所以天真地认为我可以将 -m 标志更改为 -d(作为守护进程运行 inotifywait,并包含一个 --outfile 位置),然后将其添加到 rc.local在启动时运行这个。我哪里错了?

linux shell sh inotify inotifywait

6
推荐指数
2
解决办法
4483
查看次数

docker 安装卷上的 inotify (Mac / Linux)

我已经搜索了几个小时,似乎找不到该问题的最新答案

问题:显然 VirtualBox 正在 MacOS 上由 Docker 使用,并且它不希望将文件通知从主机操作系统传递到容器。因此,当从容器内执行这些操作时,inotifywait 只会通知监视文件夹上的文件活动。当这些操作是从主机执行时则不会。

Dockerfile

FROM python:3.9.6
COPY main.sh /bin/main.sh
RUN chmod +x /bin/main.sh
RUN apt-get update -y
RUN apt-get install -y inotify-tools
CMD /bin/main.sh
Run Code Online (Sandbox Code Playgroud)

主目录

#!/usr/bin/env bash

inotifywait -mq -r -e create -e modify -e delete -e move /data |
    while read path action file; do
        echo "The file '$file' appeared in directory '$path' via '$action'" >> log.txt
    done
Run Code Online (Sandbox Code Playgroud)

构建容器

docker build -f Dockerfile -t my_container .
Run Code Online (Sandbox Code Playgroud)

运行容器

docker run -it -v …
Run Code Online (Sandbox Code Playgroud)

inotify inotifywait docker docker-for-mac

6
推荐指数
1
解决办法
5594
查看次数

在背景上运行inotifywait

我从linuxaria.com复制了这段代码作为示例,在我的情况下正常工作问题是当我从终端inotifywait停止时.我想要在退出终端后跑回地面.我怎么能这样做?

#!/bin/sh

# CONFIGURATION
DIR="/tmp"
EVENTS="create"
FIFO="/tmp/inotify2.fifo"


on_event() {
  local date=$1
  local time=$2
  local file=$3

  sleep 5

  echo "$date $time Fichier créé: $file"
}

# MAIN
if [ ! -e "$FIFO" ]
then
  mkfifo "$FIFO"
fi

inotifywait -m -e "$EVENTS" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %f' "$DIR" >       "$FIFO" &
INOTIFY_PID=$!


while read date time file
do
  on_event $date $time $file &
done < "$FIFO"
Run Code Online (Sandbox Code Playgroud)

bash inotify inotifywait

5
推荐指数
3
解决办法
5649
查看次数

Python Inotify 获取文件夹列表

我正在寻找一种方法来检查 5 个域的文档根目录以进行目录监视。

对于单个文件夹,它的工作方式是这样的

DIRECTORY_TO_WATCH = "/home/serveradmin/"

我有一个文件夹列表,需要为我的服务器递归检查这些文件夹。

我刚开始学习 python 并且有一些 C 语言的实践经验。刚刚开始学习发展。

有没有人可以帮我解决这个问题?我需要对名为 /tmp/folderlist.txt 的文件中提到的 5 个文件夹进行递归 inotify 监视

我可以参考的地方是否有任何类似的代码可用?

python bash inotify inotifywait

5
推荐指数
1
解决办法
1127
查看次数