bash - użycie inotify dla aktywacji skryptu po dodaniu plików do katalogu
bash - użycie inotify dla aktywacji skryptu po dodaniu plików do katalogu
Na wstępie chciałbym zaznaczyć, że jestem bardzo początkującym użytkownikiem Linuksa dlatego proszę o łopatologiczne tłumaczenie.
Chciałbym uruchamiać skrypt pakujący i wysyłający pliki na serwer dla każdego nowo pojawiającego się pliku a określonej lokalizacji. Skrypt może ,,obsługiwać'' tylko jeden plik jednocześnie, dlatego w przypadku pojawienia się kilku musi być uruchamiany dla każdego osobno.
Na jednym z kanałów dowiedziałem się, że można to zrobić za pomocą inotify lub dnotify, niestety nie udało mi się znaleźć informacji jak, a jedyne co wyszperałem to opcja, dzięki której osiągnę cel, czyli IN_CREATE.
Z góry dziękuję za pomoc.
Chciałbym uruchamiać skrypt pakujący i wysyłający pliki na serwer dla każdego nowo pojawiającego się pliku a określonej lokalizacji. Skrypt może ,,obsługiwać'' tylko jeden plik jednocześnie, dlatego w przypadku pojawienia się kilku musi być uruchamiany dla każdego osobno.
Na jednym z kanałów dowiedziałem się, że można to zrobić za pomocą inotify lub dnotify, niestety nie udało mi się znaleźć informacji jak, a jedyne co wyszperałem to opcja, dzięki której osiągnę cel, czyli IN_CREATE.
Z góry dziękuję za pomoc.
Dziękuję, to prawie rozwiązuje mój problem.
Jeśli dobrze patrzyłem tak powinna wyglądać ta komenda, jednak do pełnego sukcesu brakuje przekazania pełnej nazwy pliku dodanego do /home/użytkownik/folder/ do zmiennej w skrypcie skrypt.sh. Jak to zrobić?
Kod: Zaznacz cały
incrontab -e
/home/[b]użytkownik[/b]/folder/ IN_CREATE sh /home/[b]użytkownik[/b]/skrypt.sh
Zgodnie z dokumentacją:
Kod: Zaznacz cały
* $$ - a dollar sign
* $@ - the watched filesystem path (see above)
[b]* $# - the event-related file name[/b]
* $% - the event flags (textually)
* $& - the event flags (numerically)
Przeczytałem całą dokumentację i nie mogę poradzić sobie z tym incronem.
Plik wygląda tak:
Po odpaleniu tego pokazuje mi się okienko i nie mam pojęcia co zrobić dalej.
Plik wygląda tak:
Kod: Zaznacz cały
#!/bin/bash
incrontab -e
/home/[b]użytkownik[/b]/katalog/ IN_CREATE sh /home/[b]użytkownik[/b]/skrypt.sh
Po opaleniu czego pokazuje Ci się to okno?
Nazwę pliku masz pod zmienną $#, więc polecenie powinno wyglądać np. tak:
Nazwę pliku masz pod zmienną $#, więc polecenie powinno wyglądać np. tak:
Kod: Zaznacz cały
/home/[b]użytkownik[/b]/katalog/ IN_CREATE sh /home/[b]użytkownik[/b]/skrypt.sh $#
Okno pokazuje się po odpaleniu pliku ze skryptem, którego treść wpisałem.
Ale ja tą nazwę pliku ,który pojawi się w /home/user/katalog potrzebuję przenieść do pliku /home/użytkownik/skrypt.sh
Jedyne co zrobiłem to zainstalowanie incron i dodanie siebie do incron.allow, może jakiś błąd w konfiguracji?
Ale ja tą nazwę pliku ,który pojawi się w /home/user/katalog potrzebuję przenieść do pliku /home/użytkownik/skrypt.sh
Jedyne co zrobiłem to zainstalowanie incron i dodanie siebie do incron.allow, może jakiś błąd w konfiguracji?
Mam plik test.sh, jego zawartość:
I drugi skrypt.sh, w którym potrzebna mi nazwa nowo dodanego pliku.
Na razie potrzebuję uruchomienia incron, jeśli nazwa dodanego pliku zapisuje się w zmiennej $# to zapiszę ją sobie do innego pliku i potem odczytam w skrypt.sh
Kod: Zaznacz cały
#!/bin/bash
incrontab -e
/home/[b]użytkownik[/b]/katalog/ IN_CREATE sh /home/[b]użytkownik[/b]/skrypt.sh $#
Na razie potrzebuję uruchomienia incron, jeśli nazwa dodanego pliku zapisuje się w zmiennej $# to zapiszę ją sobie do innego pliku i potem odczytam w skrypt.sh
Chłopie
Otwórz sobie terminal, wpisz polecenie: Otworzy Ci się okno edytora w którym wpisz polecenie incron'a. A z tym przekazywaniem parametrów, to waść coś kombinujesz bardzo.

Kod: Zaznacz cały
incrontab -e