问题标签 [inotifywait]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Inotify 等待复制脚本损坏图像
所以我使用 inotifywait 运行这个脚本。一台服务器将图像放入位于 /var/nfs/device_images 的主机服务器上的 NFS 文件夹中。(chmod 在工作文件夹上为 777)然后主机服务器将其移动到 python 脚本的工作目录中。
它工作,有点。文件本身传输,但它已损坏。似乎 inotifywait 尝试在照片完全传输之前发送照片?有人有解决方案吗?
linux - 在 Linux 中移动可用文件
在 Centos 7 中,我使用 incrontab 跟踪 Samba 服务器上的文件夹。我想在创建此文件夹时将其复制到另一个文件夹。
在写入 Samba 服务器之前,我首先定义文件路径,软件将其直接复制到它在我指定的文件夹中创建的 incrontab。这会导致空数据。
我等待分析软件完成并期望之后复制文件。
bash - inotifywait 适用于命令,但不适用于 bash
我的目标:在目录上创建文件时运行 Rscript/home/gabriel/data
这就是我所拥有的inotiwait
我首先在终端上运行这些行,然后在/home/gabriel/data
. 创建文件后,我可以清楚地看到我的 Rscript 运行正确,因为数据库得到了更新。
但是,当我在 bash 中使用相同的代码时,我的 Rscript 无法运行。这是我的狂欢:
我打电话inotifytest.sh
并保存在/home/gabriel
. 我允许执行这个 bash:
然后开始运行 bash:
当我创建新文件时,我的数据库没有得到更新,这意味着我的 Rscript 没有运行。
我可能在很多层面都做错了,但我看不出在哪里。谢谢您的帮助。
bash - Inotifywait 不会运行
inotifwait 不会运行命令
输出“设置手表。建立手表”,脚本退出
但是当我修改 test.txt log.txt 时没有创建
试过这个版本:
也试过这个:
bash - 使用 bash 监视目录中的现有文件和新文件
我有一个使用inotify-tool
.
此脚本会在新文件到达文件夹时发出通知。它对文件执行一些工作,完成后将文件移动到另一个文件夹。(它看起来沿着这条线):
通过使用inotifywait
,只能监视新文件。使用for OLDFILE in path
代替的类似过程inotifywait
将适用于现有文件:
我尝试将这两个循环结合起来。通过首先运行第二个循环。但是,如果文件快速到达并且数量众多,则在第二个循环运行时文件将到达会发生变化。然后,两个循环都不会捕获这些文件。
鉴于文件夹中已经存在文件,并且新文件将很快到达文件夹中,如何确保脚本能够捕获所有文件?
linux - inotifywait 不适用于 Visual Studio Code
我试图让自己成为一个小的 shell 脚本,它可以使用inotifywait
并复制修改/创建的文件来监视文件更改,并将已删除的文件删除到某个目标文件夹(或rsync
特定文件)。我无法完成这项工作。
调查:inotifywait
当我使用nano
/ vim
/ touch
/编辑/删除/创建文件时能够检测到修改rm
。当我使用 Visual Studio Code 修改/创建/删除文件时,问题就出现了。当我尝试这样做时watch -d stat some_file
,即使使用 Visual Studio Code,我也可以看到所有的修改 -inotifywait
没有检测到任何东西。
由于我对 Linux 不太熟悉,因此我无法弄清楚问题出在哪里。
我希望能够使用inotifywait
,因为我想观察近 28000 个文件的变化。我不想使用 , , 的混合,因为watch
在Virtual Box 共享文件夹上递归地迭代整个目录很慢。也增加了足够的数量。ls
find
stat
fs.inotify.max_user_watches
为了完整起见,这里是简化的使用命令:
bash - 本地副本更改时自动操作文件夹的远程副本
编辑:我看到有人投票结束这个问题,因为“这个问题太宽泛了”,但上次我发帖询问如何做某事时,我被要求提供更多关于我想做什么和为什么要做的细节。所以……赢不了!我只问一个问题:“当本地副本更改时如何操作文件夹的远程副本”。我不是在问如何重命名、重新编号或制作 zip 文件,只是解释这是我作为副本的一部分需要做的事情。如果没有明显(但错误)的答案是“仅使用 rsync”,我真的想不出一个不那么详细的方法。
我想在 Ubuntu 18.04 上根据 Dropbox 文件夹(其他服务也可以添加文件)中完成的上传活动自动复制文件夹。我需要:
- 保持源文件夹不变。
- 如果还没有 - (
find . -name '[[:digit:]]*.mp3'
等) ,则为复制的文件名添加数字前缀 - 清除撇号的文件名(例如使用“ detox ”)。
- 在远程端创建文件夹的 zip。
- 如果将来源文件夹中有任何更改,请在远程副本上重新复制并重新创建 zip 文件夹。
示例:20190203 的 SOURCE 文件夹
20190203的REMOTE文件夹(处理后)
如果远程用户在一个月后在源文件夹中添加chickens.mp3并删除apostrophe's.mp3,则该过程将通过重新复制和重命名文件夹来更新远程文件夹,并自动重建 zip 文件。
可能上传的所有单个文件都小于 10Mb,因此即使是最慢的连接也不会花费超过 15 分钟来上传任何一个文件,但上传整个文件夹可能需要长达 45 分钟。
我无法根据文件夹大小、文件数量或修改日期检查更改,因为将 zip 文件添加到远程文件夹的操作将更改所有这些。
目前,我有一个每小时 crontab 运行一个包含以下内容的脚本:
SCANDIRS="$(find $BASEDIR -type f -mmin +15 -mmin -45 -printf "%h\\n" | sort -u | xargs -n 1 realpath)"
然后它遍历scandirs并发挥作用,但这可能有很多我没有预见到的问题,每小时只能运行一次,并且不允许更新旧文件夹。
我知道rsync -av --delete
如果只是文件,则使用常规 crontab 会起作用,但我完全不知道如何做我想做的事。复制的文件夹将驻留在同一个本地文件系统上(然后s3 sync
远程获取,如果你想知道!)。
我认为inotifywait可能是一个解决方案,但我不确定如何处理“等到文件夹静止一段时间但允许将来随时更新”的问题。
谢谢你。
inotify - inotifywait - 执行命令时暂停监控
我有以下命令:
这是在服务器上运行的。在我的本地,我正在对服务器进行 rsync。因此,当 rsync 运行时,inotifywait 会触发 custom_command。这行得通。
诀窍是:custom_command 修改了被监视目录中的文件,这当然会导致 inotifywait 再次触发该命令,并进入一个循环。
有没有办法在 custom_command 运行时暂停 inotifywait ?
bash - 如何使用 inotifywait 标记添加到目录的相似文件名
我有一个 shell 程序,每次将特定文件添加到目录时,它都会使用 inotifywait 运行一些代码。但是,我的代码仅适用于特定的文件名。添加到目录中的文件的名称中有一个经常更改的版本。inotifywait 是否可以捕获添加到目录中的类似文件?
添加的文件不必保留在目录中(它们只是被添加以触发 inotify 标志)。我曾考虑编写一个代码,每次将任何文件添加到目录时都会触发,但 inotifywait 似乎需要目录中已经存在的文件,并且每次更新文件时只需标记。
做某事是调用三个程序的地方。如果文件保持不变,我现在所拥有的效果很好。有人有什么建议吗?
systemd - Systemd 服务处于非活动状态(死亡),但仅在数周后
我有一个自定义的 systemd 服务,它inotify
使用某些事件扫描文件系统并创建文件。
该服务可以正常运行很多天,有时甚至可以持续数周。然后突然停止了。它被配置为使用Restart=always
,所以我希望服务在失败时自我恢复,但这并没有发生。
我想知道如何确定服务无法自行恢复的原因以及如何解决该问题。
这是服务配置:
以及文件的内容/opt/scripts/container-pid-limit.sh
systemctl status
失败前的示例输出:
systemctl status
失败后的示例输出:
编辑:我正在尝试使用systemctl status
并systemctl show
确定服务何时启动并最终停止,但在我看来,当服务失败时,所有历史记录都会丢失:
的样本输出systemctl show
: