Я использую linux mint и хочу, чтобы текстовый файл отражал изменения файлов в каталоге, он должен содержать имена файлов, которые существуют в каталоге, и автоматически добавлять вновь созданные файлы. Я ссылался на некоторые ссылки, и он сказал, что хороший способ сделать это - использовать inotify-tools . Я посмотрел на это и придумал сценарий bash.

#!/bin/sh
while inotifywait -qqe modify path-of-directory ; do 
ls > path-of-text-file;
done

Но, похоже, это не сработает. Пожалуйста, объясните мне, как это сделать, и достаточно ли этого, если я просто добавлю этот скрипт в список запускаемых приложений, чтобы он работал постоянно, или мне следует использовать crontab?

1 ответ1

0

В этом руководстве говорится, что modify запускаются при записи файла. Вы, вероятно, хотите отслеживать create , delete и move событий.

Проверьте этот более сложный ответ на аналогичный вопрос. Там упоминается команда nohup . Другая полезная команда может быть disown .


Я думаю, что зацикливание inotifywait может пропустить событие, когда оно происходит во время выполнения ls (потому что в этот момент не выполняется inotifywait ). Есть опции -m и -d , они ничего не должны пропустить. Этот подход должен быть немного более надежным:

inotifywait -me create,delete,move path-of-directory | while read a ; do ls > path-of-text-file; done

Теперь inotifywait -m работает все время и выводит одну строку текста на каждое пойманное событие. Тогда каждая такая строка вызывает запуск ls .


Другим решением будет iwatch и его демон. Конечно, для настройки демона необходим root-доступ. Прочитайте мой ответ на другой вопрос и настройте его под свои нужды.

Кроме того, вас может заинтересовать LoggedFS - мониторинг файловой системы с помощью FUSE.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .