Jak utworzyć usługę systemD w Linux

Jak utworzyć usługę systemD w Linux

Systemd to nowoczesny pakiet oprogramowania, który zapewnia wiele komponentów w systemie Linux, w tym menedżera systemu i usług. Jest kompatybilny z Sysv I LSB inicjować skrypty i działa jako zamiennik Sysvinit.

Usługa SystemD jest zdefiniowana w pliku jednostkowym (jednostka jest reprezentacją zasobów usługowych i systemowych, takich jak urządzenia, gniazda, punkty montażowe itp.). Pliki na niestandardowe urządzenie serwisowe powinny być przechowywane w /etc/systemd/system/ katalog i musi mieć .praca rozszerzenie. Na przykład zwyczaj Test-App Zastosowania usług /etc/systemd/system/test-app.praca plik jednostki.

[Możesz także polubować: Dlaczego „init” wymagał zastąpienia „Systemd” w Linux]

Plik jednostki to zwykły tekst w stylu INI, który zwykle zawiera trzy wspólne sekcje. Pierwsza sekcja to zwykle Jednostka sekcja, która zawiera ogólne informacje o jednostce, która nie jest zależna od rodzaju jednostki.

Następna sekcja to sekcja typu jednostki, dla usługi jest to Praca Sekcja. A ostatnia sekcja to zainstalować sekcja, która zawiera informacje o instalacji dla urządzenia.

W tym przewodniku pokażemy, jak stworzyć nowy Systemd serwis i zarządzaj usługą za pomocą polecenia SystemCtl w Linux.

Tworzenie niestandardowego pliku usługi SystemD w Linux

Aby uruchomić aplikację, program lub skrypt jako usługa w systemieD, możesz utworzyć nową usługę SystemD w następujący sposób. Zacznij od utworzenia usługi jednostka plik o nazwie Test-App.praca (Pamiętaj, aby wymienić Test-App z rzeczywistą nazwą usług lub aplikacji), poniżej /etc/systemd/system/:

# vi/etc/systemd/system/test-app.praca 

Do zdefiniowania usługi do uruchamiania A Poniższa konfiguracja jest używana Kolba aplikacja za pomocą Gunikorn, Python WSGI HTTP serwer dla UNIX.

[Jednostka] Opis = demon gunicorn do obsługi testu-app.Target [Service] User = root Group = root WorkingDirectory =/Apps/Test-App/Environment = "Path =/Apps/Test-App/bin" execStart =/Apps/Test-App/bin/gunicorn-Workers 9- T 0 - -Bind 127.0.0.1: 5001 -M 007 WSGI: App-Log-Light Debugowanie-Access-Logfile/var/log/gunicorn/test_app_access.log --error-logfile/var/log/gunicorn/test_app_error.log execRoad =/bin/kill -s hup $ mainPid restartsec = 5 [instaluj] Wantby = Multi -użytkownik.cel 

Krótko opiszmy każdą dyrektywę konfiguracyjną w powyższej konfiguracji:

  • Opis - służy do określenia opisu usługi.
  • Po - definiuje związek z drugą jednostką, sieć.cel. W tym przypadku Test-App.praca jest aktywowany po sieć.cel jednostka.
  • Użytkownik - służy do określenia użytkownika, z których uprawnienia będzie działać usługa.
  • Grupa - służy do określenia grupy, z których uprawnienia będzie działać usługa.
  • Katalog roboczy - służy do ustawienia katalogu roboczego dla wykonanych procesów.
  • Środowisko - służy do ustawiania zmiennych środowiskowych dla wykonanych procesów.
  • ExecStart - jest używany do zdefiniowania poleceń za pomocą swoich argumentów, które są wykonywane po uruchomieniu tej usługi.
  • ExecRoad - służy do zdefiniowania poleceń do wykonania w celu uruchomienia przeładowania konfiguracji w usłudze.
  • Wanted - umożliwia utworzenie symbolicznego linku w .chce/ Lub .wymaga/ katalog każdego z wymienionych jednostek (y), Multi-użytkownik.cel W tym przypadku, gdy Test-App.praca Jednostka jest włączona za pomocą Systemctl Włącz polecenie.

Wszystkie parametry konfiguracji jednostki serwisowej można znaleźć dobrze opisane w dokumentacji konfiguracji jednostki serwisowej.

Zapisz plik jednostki i zamknij go. Następnie ponownie załaduj SystemD z tym nowym plikami jednostki serwisowej, uruchamiając:

# Systemctl Demon-Reload Command 

Pamiętaj, aby zawsze uruchomić to polecenie po edytowaniu pliku jednostki.

Zarządzaj usługą SystemD w Linux

Aby uruchomić/aktywować usługę, uruchom polecenie SystemCtl w następujący sposób:

# Systemctl Start Test-App.praca 

Aby sprawdzić, czy usługa działa, czy nie, wydaj polecenie SystemCtl, jak pokazano.

# SystemCtl Status Test-App.praca 
Sprawdź status usługi

Aby umożliwić uruchomienie usługi w systemie, użyj SystemCtl Włącz Komenda. Możesz sprawdzić, czy usługa została włączona za pomocą SystemCtl jest dostępny polecenie w następujący sposób:

# Systemctl Włącz aplikację testową.Service # SystemCtl IS-obsługujący aplikacja testowa.praca 
Włącz usługę rozpoczęcia u rozruchu

Alternatywnie możesz również włączyć i uruchomić usługę w tym samym czasie, jak pokazano.

# SystemCtl Enable-Teraz test testowy.praca 

Aby zatrzymać/dezaktywować usługę, uruchom SystemCtl Stop polecenie w następujący sposób:

# SystemCtl Stop Test-App.praca 

Aby zrestartować usługę, uruchom Systemctl restart polecenie w następujący sposób:

# Systemctl restart-antary-app.praca 

Możesz także wyłączyć usługę, aby zapobiec rozpoczęciu działalności w systemie, używając SWyłącz ytemctl Komenda. Możesz sprawdzić, czy usługa została włączona za pomocą SystemCtl jest dostępny polecenie w następujący sposób:

# SystemCtl wyłącz aplikację testową.Service # SystemCtl IS-DISBABLED TESTAPPAL.praca 

Alternatywnie możesz to wyłączyć i zatrzymać jednocześnie, jak pokazano.

# SystemCtl Wyłącz-Teraz test testowy.praca 

Aby uzyskać więcej informacji na temat zarządzania usługami SystemD i innymi zasobami, uruchom:

# Man Systemctl