2015-04-21 9 views
0

Я использую fswatch контролировать каталог и запустить сценарий, когда видео файлы копируются в этот каталог:Справочник мониторинга с использованием fswatch

fswatch -o /Path/To/Directory/Directory | xargs -n 1 sh /Path/To/Script/Script.sh 

Проблема в том, что файл часто не завершил свою копию перед сценарием . Файлы представляют собой видеофайлы разного размера. Маленькие файлы в порядке, больших файлов нет.

Как я могу отложить уведомление fswatch до тех пор, пока файл не завершит его копию?

ответ

2

Прежде всего, поведение мониторов fswatch зависит от ОС: при задании вопроса о fswatch вам лучше указать используемую ОС.

Однако, нет никакого способа сделать это, используя только fswatch. Процесс может открыть файл для записи и держать его открытым в течение достаточного времени, чтобы ОС могла отправлять несколько событий. Боюсь, что ничего не может fswatch.

В альтернативном подходе может использоваться другой инструмент для проверки того, открыт ли измененный файл: если нет, тогда запустите свой скрипт, в противном случае пропустите его и дождитесь следующего события. Такие инструменты специфичны для ОС: в OS X и Linux вы можете использовать lsof. Помните, что этот подход не защищает вас от еще процесс открытия этого файла пока ваш скрипт запущен.

 Смежные вопросы

  • Нет связанных вопросов^_^