1

我想使用 inotifywait 来监视一个特殊的文件夹,以使用 HandBrake 转换文件。我手动移动了 monitor_folder 中的文件。

简单的脚本如下所示:

inotifywait -mrq -e moved -e create --format %f /media/user/monitor_folder | while read FILE
do
    sleep 2
    HandBrakeCLI -i /media/user/monitor_folder/$FILE -o /media/user/finished/$FILE -e x264 -q 20 -B 160
done

只要我在每次从 HandBrake 转换后将每个文件都放在受监控的文件夹中,它就可以正常工作。

在 HandBrake 工作时,inotifywait 似乎不监视文件夹。即使我将两个文件同时放在受监控的文件夹中:只有第一个文件是由 HandBrake 转换的。

如何监控文件夹以将其与 Handbrake 一起排队?

顺便说一句:真正的脚本在命令上要长得多,而不仅仅是一行。

4

1 回答 1

0

在阅读以下内容之前,我认为这会对您有所帮助:如何在文件更改时执行命令

你有没有想过使用

-d,--守护进程

与 --monitor 相同,但在后台将事件记录到必须由 --outfile 指定的文件中运行。暗示 --syslog。

代替

-m,--监控

与其在接收到单个事件后退出,不如无限期地执行。这

默认行为是在第一个事件发生后退出。

这将允许您检查inotifywait拾取的文件

-r,--递归

观察作为参数传递的任何目录的所有子目录。手表将递归设置到无限深度。不遍历符号链接。新创建的子目录也将被监视。

警告:如果在监视大树的根目录时使用该选项,可能需要一段时间才能建立所有inotify 监视,并且在此期间不会收到事件。此外,由于每个子目录将建立一个 inotify 手表,因此可能会达到每个用户的最大 inotify 手表数量。默认最大值为 8192;可以通过写入 /proc/sys/fs/inotify/max_user_watches 来增加它。" 参考inotifywait

然而,健壮的应用程序应该允许这样一个事实,即监控逻辑中的错误或下面描述的竞争可能会使缓存与文件系统状态不一致。 做一些一致性检查可能是明智的,并在检测到不一致时重建缓存。

引用inotify

于 2016-06-21T19:11:52.623 回答