在bash中使用inotifywait监视文件夹以获取队列

时间:2016-06-19 18:35:39

标签: bash inotify handbrake

我想使用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对其进行排队?

顺便说一句:真正的剧本在命令上的时间要长得多,不仅仅是一条线。

1 个答案:

答案 0 :(得分:0)

在下面阅读之前,我认为这将对您有所帮助。 how to execute a command whenever a file changes

您是否考虑过使用

  

-d, - damonmon

     

与--monitor相同,除了在后台运行将事件记录到文件中   必须由--outfile指定。意味着--sloglog。

而不是

  

-m, - monitor

     

不是在收到单个事件后退出,而是无限期执行。

     

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

这样您就可以查看 inotifywait

所选的文件

另外

“ - r, - recursive

查看作为参数传递的任何目录的所有子目录。手表将以递归方式设置为无限深度。不遍历符号链接。还将监视新创建的子目录。

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

然而,强大的应用程序应该允许这样的事实        下面描述的监控逻辑种族中的 可能会 缓存与文件系统状态不一致。它是        可能明智的做一些一致性检查,并重建缓存        当检测到不一致时。

参考inotify

希望这有帮助