Mam maszynę Fedora 23.
Mam skrypt bash synchronizujący katalog / plik, który synchronizuje mój katalog lokalny / domowy ze zdalnym katalogiem (na komputerze NAS). Uruchamiam go ręcznie, ale chciałbym utworzyć usystematyzowaną usługę i uczynić ją bardziej elastyczną, ponieważ inne osoby używają mojego komputera z własnymi danymi uwierzytelniającymi, chciałbym wiedzieć, kiedy użytkownik jest zalogowany i później uruchomić moją usługę.
Czy mogę coś zrobić z pliku systemowego mojej usługi lub czy muszę to sprawdzić w kodzie w skrypcie?
Muszę tylko upewnić się, że mam dostęp do zmiennych środowiskowych (takich jak $ USER) i uruchomić je jako usługę.
Moim głównym źródłem dokumentacji jest ten link https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html
systemctl --user
działa na F23?76 loaded units listed
..bashrc
podczas logowania, a następnie nasłuchuje sygnału wylogowania z Gnome i wyłącza się.Odpowiedzi:
Użyj systemd, to już obejmuje obsługę sesji użytkownika, w rzeczywistości powinieneś już na nim polegać (nieświadomie).
Utwórz katalog usług
Utwórz edycję pliku usługi (vim, gedit, geany - cokolwiek chcesz)
Powinno to mniej więcej tak wyglądać, jeśli jest to usługa stała.
Ale wygląda na to, że wolisz go raz uruchomić, a potem bądź dobry, więc raczej użyj konfiguracji oneshot:
Zakłada to oczywiście, że twój skrypt jest wykonywalny, tj .:
W przeciwnym razie musisz przygotować ścieżkę do odpowiedniego tłumacza:
Teraz ponownie załaduj systemd (i ponownie zaloguj się w celu przetestowania)
Jeśli potrzebujesz więcej informacji, zajrzyj na przykład na Arch-Wiki . Ten wątek askubuntu ma różne pomysły, w tym zresztą kopalni.
Możesz rozszerzyć to zachowanie (jeśli jesteś rootem) na innych użytkowników, definiując usługę globalnie. W tym celu musisz utworzyć plik usługi w / usr / share / systemd / user / not in $ HOME / .local / share / systemd / user .
źródło
Wiem, że to kilka lat, ale odpowiedź od anx po prostu mi pomogła. Sądzę więc, że nadal jest to właściwe. Jest to także bardziej komentarz, ale nie mam takiej wiedzy, więc zamieszczam go jako „odpowiedź”. W każdym razie...
W systemie Linux Mint 19 nie mogłem „włączyć” usługi, gdy skrypt znajdował się w katalogu „$ HOME / .local / share / systemd / user”. Próba zrobienia tego zawsze powodowała błąd. Mógłbym jednak dobrze go uruchomić z katalogu „$ HOME / .local / share / systemd / user”. Po przeniesieniu skryptu do „/ usr / share / systemd / user /” systemd pozwolił mi go włączyć bez problemu.
źródło