Как заставить 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?"