我想使用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对其进行排队?
顺便说一句:真正的剧本在命令上的时间要长得多,不仅仅是一条线。
答案 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
希望这有帮助