Nowe posty

Autor Wątek: skrypt do monitorowania katalogu  (Przeczytany 1861 razy)

Kuri93

  • Gość
skrypt do monitorowania katalogu
« dnia: 2014-11-10, 18:15:34 »
Witam.
Napisałem sobie skrypt, który będzie mi automatycznie wypakowywał pliki z archiwum jeśli się takie pojawi. Skrypt działa, ale tylko wtedy gdy jest w katalogu "/home/damian/Pobrane". Chciałbym przenieś skrypt do "/etc/init.d/" i dodać do wykonywania przy starcie. Coś jest nie tak z tym skryptem ?
#!/bin/bash
inotifywait -m /home/damian/Pobrane -e create -e moved_to |
while read path action file
do
case "$file" in *.zip)
    if test -f "$file"; then
unzip  -u "$file" -d /home/damian/napisy/
rm "$file"

fi
esac
    done

płona

  • Gość
skrypt do monitorowania katalogu
« Odpowiedź #1 dnia: 2014-11-11, 10:08:25 »
Skrypt jest OK, błędny jest sposób instalacji w katalogu /etc/init.d
Aby skrypt w init.d mógł być poprawnie uruchomiony przy starcie musi reagować na opcje:
start
stop
restart | reload
status

Oprócz tego musi być link do niego w jednym (lub) kilku z katalogów /etc/rc.0 .. /etc/rc.6

Skrypty z /etc/init.d nie służą do bezpośredniego uruchamiania czegoś tam, a tylko uruchamiają właściwy proces, więc Twój skrypt powinieneś przenieść np. do /usr/local/bin

W sumie sprawa jest dość prosta - przejrzyj dowolny skrypt z /etc/init.d, i zobacz jak jest linkowany w /etc/rc.# Na tej podstawie napiszesz sobie własny.

xavery

  • Gość
skrypt do monitorowania katalogu
« Odpowiedź #2 dnia: 2014-11-13, 10:16:04 »
Polecam mechanizm Inotify dostępny w paczkach lub ze źródeł. Polega on na reagowaniu na zdarzenia (np. utworzenie pliku, otwarcie, zamknięcie, usunięcie, etc...) zachodzące w filesystemie i wszystko odbywa się z poziomu jądra. Można też łatwo zdemonizować taki skrypt więc jest możliwe umieszczenie go w systemowych mechanizmach startowych.

Edit: nie zauważyłem, że skrypt wykorzystuje inotify:) W takim razie faktycznie należy go przystosować do startu w skryptach startowych (najprościej dopisać do /etc/rc.local, zależy od dystrybucji) i zrobić z niego demona (opcja -d do inotifywait).