Wiem, że była trochę dyskusji na podobne tematy. Ale oto, co właściwie próbuję zrobić.
Mam wywołany katalog obserwacyjny watched
i za każdym razem, gdy plik jest dodawany do tego katalogu, chcę uruchomić wywoływany skrypt, syncbh.sh
który usunie pliki z tego katalogu i prześle je na zdalny serwer.
Zastrzeżenie polega na tym, że pliki są tworzone w watched
katalogu przez jednego użytkownika (użytkownik2), ale skrypt jest wykonywany przez innego użytkownika (użytkownik1).
Próbowałem użyć incron, aby to osiągnąć, ale ciągle napotykam na poważny problem, ponieważ chociaż skrypt może być wykonany ręcznie przez użytkownika1 z uprawnieniami administratora, demon incron nigdy nie jest automatycznie uruchamiany przez zdarzenie tworzenia pliku przez innego użytkownika2.
Myślałem o tym, czy inoticoming byłoby lepszą alternatywą, ale nie jestem pewien, jak działa składnia tego. Jeśli istnieje lepszy sposób, aby to osiągnąć, lub jeśli skończę przy użyciu inoticoming, jaka byłaby składnia polecenia, aby poprosić o obejrzenie /home/user1/watched
katalogu i wykonanie skryptu, /usr/local/bin/syncbh.sh
jeśli plik zostanie utworzony / zmodyfikowany w tym katalogu?
Każda pomoc będzie mile widziana.
źródło
inoticoming
?Odpowiedzi:
Używanie
inoticoming
:Możesz umieścić skrypt,
/etc/init.d/
który będzie działałinoticoming
w czasie uruchamiania.Utwórz nowy folder do przechowywania
inoticoming
dziennika / ostatniegopid
dlawatched
folderu:sudo mkdir -p /var/log/inoticoming/watched/
Utwórz skrypt
inoticoming_watched
w/etc/init.d/
:* Pamiętaj, aby zmienić <path_to_folder> i <path_to_script>, aby dopasować pełną ścieżkę
watched
folderu i pełną ścieżkę skryptu do wykonaniaOznacz skrypt jako wykonywalny:
sudo chmod u+x /etc/init.d/inoticoming_watched
Upewnij się, że wywoływany skrypt
inoticoming_watched
jest wykonywalny.Zaktualizuj,
rc.d
aby usługainoticoming_watched
uruchomiła się w czasie uruchamiania:sudo update-rc.d inoticoming_watched defaults
Możesz sprawdzić
inoticoming
logowanie/var/log/inoticoming/watched
.źródło
Przede wszystkim zainstaluj inoticoming :
Następnie użyj tego polecenia:
Zwróć uwagę na trwające procesy inoticoming, ponieważ można je uruchomić wiele razy.
Proces przebiega w tle i jest obserwowany
/home/user1/watched
Po dodaniu lub zmianie pliku w tym katalogu
/usr/local/bin/syncbh.sh
wywoływany jest skrypt .W tym przypadku jest parametr tego skryptu
/home/user1/watched/<name_of_changed_or_modified_file>
{}
zastępuje się nazwą plikuźródło
Przede wszystkim skrypt do oglądania
watched
katalogu:Po drugie Aby zsynchronizować jako inny użytkownik (użytkownik2):
Teraz, aby nie podjąć natychmiastowe użytkownik, można ustawić
sudo
hasło w pliku i odczytać hasło z tego pliku, gdy są potrzebne (uwaga trzeba korzystać-S
zsudo
aby dostać hasło z pliku).Załóż
sudo
hasło w pliku, przypuśćmypasswd.txt
, że powyższe polecenie będzie do baniTeraz ogólny skrypt będzie wyglądał następująco:
źródło