tło
Piszę prosty skrypt do uruchomienia w Raspbain na Raspberry Pi 2, wystarczy włączyć diodę LED, aby wskazać, że jestem gotowy na połączenie z SSH z mojego komputera stacjonarnego.
Skrypt nie jest tutaj ważny, tylko wspomnieć, że ponieważ używam kontroli częstotliwości, więc skrypt działa w nieskończonej pętli, aby często włączać i wyłączać diodę LED. To jest przykład prostej usługi. Jednak przynajmniej zaakceptowana odpowiedź na to pytanie radzi mi ustawić typ na bezczynny. Tak wygląda mój plik usługi
[Unit]
Description=Turn on LED after SSH is ready
[Service]
Type=idle
ExecStart=/usr/bin/sshready.py
[Install]
Wants=network-online.target
After=network-online.target
Efekt
Usługa działa zgodnie z oczekiwaniami. Zauważyłem jednak, że kiedy zaczynam szpachlowanie na komputerze stacjonarnym zaraz po włączeniu diody LED, monit logowania nie pojawia się natychmiast. Więc sprawdziłem z
$ systemd-analyze plot > output.svg
Wynik pokazuje
Pytanie
Wygląda na to, że moje usługi zaczynają się później network-online.target
, co jest tutaj nie tak i jak mogę to naprawić?
Napraw to, modyfikując usługę jako
Nadal nie do końca rozumiałem, co robię, ale teraz działa. Czy ktoś może wyjaśnić?
Aktualizacja
Ta odpowiedź została stworzona przeze mnie, zanim nadeszła akceptowana odpowiedź.
źródło
After=
dyrektywa musi znajdować się w[Unit]
sekcji. Po prostu to.