jak umieścić wyzwalacz w katalogu

25

Mam skrypt, który skanuje katalog i zajmuje się konserwacją plików w nim zawartych. Kolejny proces tworzy pliki w katalogu (10–30 plików dziennie).

Skrypt jest wywoływany przez codzienną pracę crona. Potrzebuję uruchomić skrypt na zdarzeniu (za każdym razem, gdy w katalogu tworzony jest nowy plik). Wolę to niż zwiększanie częstotliwości pracy crona.

Jak mogę to zrobić? czy istnieje polecenie lub program do zainstalowania?

Z góry dziękuję za wszelką pomoc.

Albert Green
źródło

Odpowiedzi:

23

inoticoming

inoticoming to demon do oglądania katalogu z systemem inotify systemu Linux i wyzwalania akcji po umieszczeniu w nim plików o określonych nazwach.

Na przykład można go użyć do oczekiwania na przesłanie plików .changes do katalogu i wywołania reprezentpro w celu umieszczenia ich w repozytorium.

incron

incron to system „inotify cron”. Działa jak zwykły cron, ale jest sterowany przez zdarzenia systemu plików zamiast zdarzeń czasowych. Ten pakiet zawiera dwa programy, demona o nazwie „incrond” (analogicznie do crond) oraz manipulator tabeli „incrontab” (jak „crontab”).

incron używa wywołań systemowych inotify jądra Linux.

podobnie jak cron, każdy użytkownik może edytować własne tabele incron.

Florian Diesch
źródło
2
Czy możesz podać przykład? Linki do stron podręcznika są również mile widziane, nie mogłem znaleźć tego incron, inoticomingktóry jest tutaj .
Lekensteyn,
Informacje na temat incron można znaleźć na stronach incrond, incrontab i incron.conf
Florian Diesch
2
Zredagowałem twoją odpowiedź w taki sposób, w jaki chciałem ją zobaczyć. Skopiowałem go z opisów pakietów, w przyszłości
nazwijmy
4

Istnieje również mały program o nazwie iwatch- patrz strona man (ta strona dotyczy Ubuntu precyzyjnie (12.04), zawiera linki do innych wersji ubuntu).

iwatch ma możliwość oglądania folderów rekurencyjnie (tj. także podfolderów) i wysyłania wiadomości e-mail w odpowiedzi na zdarzenia związane z plikiem / katalogiem.

drevicko
źródło
3

Innym narzędziem, o którym warto wiedzieć, jest fileschanged( strona man tutaj ), które może monitorować zdarzenie systemu plików w wybranych plikach lub katalogach, na przykład następujące polecenie

fileschanged -s created -t1 $PWD

powinien monitorować bieżący katalog w poszukiwaniu zdarzeń związanych z tworzeniem plików, zapisując nazwę utworzonego pliku stdoutz 1-sekundowym limitem czasu.

fileschangedmoże oglądać foldery rekurencyjnie (jak można iwatchzauważyć w innej odpowiedzi), w przeciwieństwie do incroni inoticoming.

enzotib
źródło
2

tam znajduje się strona man inotify

jeśli wolisz skrypty python, możesz użyć pyinotify

Pascal
źródło