inotify действует только при модификации пользователем root

Если у вас есть GNUtar (, распространенный в Linux ), вы можете использовать опцию --transform.

Например, с помощью вашей текущей команды мы можем увидеть каталоги:

$ find. -name '*.c' | xargs tar -rf allcfiles.tar
$ tar tf allcfiles.tar                            
./b.c
./d/e.c
./a.c

С помощью преобразования мы можем избежать этого:

$ find. -name '*.c' | xargs tar --transform='s!.*/!!' -rf allcfiles.tar
$ tar tf allcfiles.tar                                                  
b.c
e.c
a.c

Выражение внутри --transformявляется простым выражением sed. Этот просто удаляет все компоненты каталога.

0
14.03.2021, 18:45
1 ответ

inotifywait не заботятся об эффективных UID/GID -, он работает на другом уровне.

Цикл while, который у вас здесь, завершается всякий раз, когда inotifywaitзавершается с не -нулевым статусом возврата -, возможно, это ваша проблема:

EXIT STATUS

1 An error occurred in execution of the program, or an event occurred which was not being listened for. The latter generally occurs if something happens which forcibly removes the inotify watch, such as a watched file being deleted or the filesystem containing a watched file being unmounted.

Пожалуйста, попробуйте изменить его на

#! /bin/bash
while inotifywait -e close_write "path_to_watched_file"; true; do
    sh /usr/local/bin/action_to_perform.sh
done

Это будет сжигать циклы ЦП, если файл отсутствует, вы можете добавить sleep 1после выполнения действия _по _.

1
18.03.2021, 22:25

Теги

Похожие вопросы