Как заставить inotifywait остановиться после завершения дампа памяти?

Итак, в поисках способа выяснить, когда создается файл, чтобы начать копирование, я обнаружил inotifywait, но, похоже, он не работает для меня.

Я использую Redline для сброса памяти на удаленном компьютере, и у меня есть сценарий, чтобы он мог найти нужные каталог и файл, но когда я пытаюсь настроить inotifywait, он просто зависает и никогда не возвращает, что файл завершен (я интересно, если Redline хранит файл открытым до тех пор, пока он не завершит все сканирование, даже если фактический образ памяти готов?)

я пробовал

inotifywait -m -e create fileName

а также

inotifywait -m -e close_write fileName

Но ни один из них, похоже, не работает. Они говорят, что часы созданы, но потом просто остаются там долго, после того, как файл больше не записывается. И я не знаю, как проверить, есть ли на удаленном компьютере дескриптор открытого файла... cp, безусловно, все еще работает, а tail -f ясно показывает, что файл не записывается. Есть ли элегантное решение для уведомления моего сценария о готовности файла к копированию?

1 ответ

Вы просили его никогда не выходить:

   -m, --monitor
          Instead of exiting after receiving a single event, execute
          indefinitely.  The default behaviour is to exit after the
          first event occurs.

Ждёт бесконечно, попробуй inotifywait -e close_write fileName

Альтернативный подход заключается в реализации занятого цикла с --timeout / -t, но это предполагает непрерывный ввод данных:

while inotifywait -e modify -t 15 fileName; do
    echo "something was written in the last 15 seconds"
done
echo "no activity for 15 seconds. done?"
Другие вопросы по тегам