Перечислите или обновите содержимое каталога при изменении (т. Е. Новый файл был создан или удален) в текстовый файл.
Я использую linux mint и хочу, чтобы текстовый файл отражал изменения файлов в каталоге, он должен содержать имена файлов, которые существуют в каталоге, и автоматически добавлять вновь созданные файлы. Я сослался на некоторые ссылки, и он сказал, что хороший способ сделать это с помощью inotify-tools
, Я посмотрел на это и придумал сценарий bash.
#!/bin/sh
while inotifywait -qqe modify path-of-directory ; do
ls > path-of-text-file;
done
Но, похоже, это не сработает. Пожалуйста, объясните мне, как это сделать, и достаточно ли этого, если я просто добавлю этот скрипт в список запускаемых приложений, чтобы он работал постоянно, или я должен использовать crontab
?
1 ответ
В этом руководстве говорится, что 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.