Список або оновлення вмісту каталогу при зміні (тобто створений новий файл або видалений файл) до текстового файлу


0

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

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

Але це, здається, не працює, будь ласка, вкажіть мене, як це зробити, і чи достатньо я, якщо я просто додаю цей скрипт до списку запуску програм, щоб він постійно працював або повинен використовувати crontab?


За допомогою простого >перенаправлення файл буде перезаписаний при будь-якій зміні.
Сет

Відповіді:


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і його демон. Звичайно, для налаштування демона потрібен кореневий доступ. Прочитайте мою відповідь на інше запитання та пристосуйте її до ваших потреб.

Крім того, вас може зацікавити моніторинг LoggedFS - файлової системи за допомогою FUSE .


Дякую приятелю, вищезазначене працює чудово лише в одному питанні, він оновлює текстовий файл, коли файл створюється, але він не розпізнає, коли файл видаляється за допомогою кнопки видалення - це клавіатура, хоча це працює, коли rmвикористовується команда.
Ніхто

@Nobody Кнопка видалення може mvфайл у кошик чи так. Спробуйте додати moveподію до списку (тобто вона буде create,delete,move). Відповідь оновлено.
Каміль Маціоровський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.