Назад | Перейти на главную страницу

сценарий inotifywait вызывает рекурсивный цикл

У меня есть сценарий inotifywait, который отслеживает каталог загрузки ftp, и всякий раз, когда загружается новый файл, он устанавливает правильные разрешения.

Я делаю это, потому что удаленный клиент устанавливает неправильные режимы файлов и предотвращение приема ftp-сервером команд chmod заставляет удаленный клиент выплевывать ложные ошибки.

поэтому мое последнее средство - это сценарий inotify, но это вызывает еще одну проблему, вот она:

#!/bin/bash
inotifywait -mrq -e ATTRIB --format "%w%f" /home/user/upload/ | while read FILE; do 
  if [[ -f "$FILE" ]];then
    chown user:apache "$FILE" && chmod 640 "$FILE"
  fi
done

Итак, я предполагаю, что здесь идет не так, это то, что после того, как файл загружен и изменен клиентом с помощью chmod, срабатывает опция ATTRIB (как и положено), но результирующий chmod в моем собственном скрипте снова запускает параметр ATTRIB ... вызывая рекурсивный цикл.

есть ли способ дать понять inotifywait, что он должен игнорировать свои собственные действия, предотвращающие этот цикл?

Вместо того, чтобы иметь inotifywait ждать -e attrib, ты должен ждать -e modify.

   modify
   A watched file or a file within a watched directory was written to.

   attrib
   The metadata of a watched file or a file within a watched directory was modified.  This includes timestamps,  file permissions, extended attributes etc.