Всем заинтересованным знаком этот простой и превосходный инструмент для мониторинга изменений файлов, например / var / www/html/uploads/
inotifywait -m /var/www/html/uploads/ -e create -e access |
while read path action file; do
echo "The file '$file' appeared in directory '$path' via '$action'"
# do something with the file
done
В моем случае по умолчанию выполняются два фактических действия (пожалуйста, следуйте логике c)
- first - файл перемещен в / var / www/html/uploads/
- second - этот файл открыт для изменения атрибута доступа
Разница в том, - это может быть НОВЫЙ файл - или ЖЕ файл с тем же именем файла.
Легко подражать на месте.
Так что я столкнулся со странной проблемой с сообщениями журнала от inotifywait.
Существует 2 сценария ios
- ПЕРВЫЙ сценарий - файл ранее не существовал в / var / www/html/uploads/ - поэтому inotifywait должен в первую очередь регистрировать событие «создания»
- ВТОРОЙ сценарий - тот же файл с тем же именем перезаписывается в / var / www/html/uploads/ и открывается - поэтому inotifywait должен регистрировать только событие "access"
Но проблема в том, что - inotifywait просто пишет изменения, относящиеся к «доступу»!
Неважно - NEW файл возник в / var / www/html/uploads/ и открылся, или существующий файл с тем же именем возник в / var / www/html/uploads/ и открылся - в любом случае журнал inotifywait ТОЛЬКО (!)
The file '31961987.zip' appeared in directory '/var/www/html/uploads/' via 'ACCESS'
На мой взгляд - inotifywait с двумя сценариями ios выше и кодом монитора, как указано выше, должен записывать журнал следующим образом
для НОВОГО имени файла две записи должны быть как
The file '31961987.zip' appeared in directory '/var/www/html/uploads/' via 'CREATE'
The file '31961987.zip' appeared in directory '/var/www/html/uploads/' via 'ACCESS'
для ТОГО ЖЕ файла, запись журнала должна быть только
The file '31961987.zip' appeared in directory '/var/www/html/uploads/' via 'ACCESS'
Но, как уже было сказано выше - в журнале inotifywait только одно событие
The file '31961987.zip' appeared in directory '/var/www/html/uploads/' via 'ACCESS'
Для меня это похоже на ошибку logi c для inotifywait.
Май Будь я не прав - но если кто-то понимает логику c inotifywait - пожалуйста, намекните
- Сценарий монитора (как указано выше) неправильно писать события журнала последовательно «как они на самом деле происходят»?
- где написать о проблеме для inotifywait (если вы согласны, что это ошибка logi c)?
Представьте, что вам нужно выполнить ДВА различных действия в зависимости от статус файла
- , если файл в разделе "cre" "событие" - одно действие
- , но если файл находится под событием "доступ" - другое действие
Есть идеи, как его реализовать в Linux и inotifywait?
Давайте обсудим,