Как указал Эндрю Хенле, это произошло из-за ошибки в libtrash. Я только что выпустил новую версию , которая должна исправить это поведение.
Использовать режим монитора -m
, чтобы inotifywait
не закрывался после изменения файловой системы, а вместо этого выводился на стандартный вывод. вы можете направить этот поток в скрипт чтения, который читает строки из inotofywait и выполняет вашу обработку.
Один из способов — запустить inotifywait
в режиме монитора, например:
inotifywait -m -q -r -e create --format '%w%f' "$watchpath" |
while read -r path; do
: # do something with path
done
Тем не менее, между процессами все еще будет гонка, я не уверен, что есть способ избежать гонок с помощью утилит оболочки.
Даже справочная страница перечисляет это с оговорками.
The inotify API identifies affected files by filename. However, by the time an application processes an inotify event, the filename may already have been deleted or renamed.