Krótki instruktaż systemd: usługi



RTFM: systemd.service

Do śmieci: skrypty sysvinit i upstart

Podstawową jednostką w systemd są usługi. Definiowane w plikach z rozszerzeniem .service, ładowanych, tak jak inne jednostki, z katalogów /lib/systemd/system/, /etc/systemd/system/, /usr/share/systemd/system/ i /usr/local/share/systemd/system/ dla usług systemowych. Usługi definiowane w ramach sesji użytkownika znajdują się w katalogach session.

Stwórzmy najprostszą usługę. W jednym z powyższych katalogów załóżmy plik touchme.service z następującą zawartością:

[Service]
ExecStart=/bin/touch /tmp/hey

To wystarczy. Załadowanie definicji tej usługi do systemd i jej uruchomienie:

# systemctl load touchme.service
# systemctl start touchme.service

W katalogu /tmp/ powinien pojawić się pusty plik hey.

To oczywiście tylko wierzchołek góry lodowej. Podaliśmy jeden parametr usługi — program do uruchomienia. Pełną kontrolę zapewnia ponad setka innych właściwości:

# systemctl show --all touchme.service | wc -l
109

Opis wszystkich znajduje się w na stronach manuala systemd.unit, systemd.exec i systemd.service. Wśród właściwości znajdują się również informacyjne, jak np. kiedy usługa została ostatni raz uruchomiona, zatrzymana itp. Jest też mnóstwo innych skarbów.

Dla porównania, w upstart definicja usługi pozwala podać wartość nice, poprawkę braną przez Out-Of-Memory killera i czy restartować usługę automatycznie. Definicja systemd załatwia te trzy rzeczy, a także:

  • piorytet planisty wejścia/wyjścia
  • wszystkie dostępne ulimity
  • politykę schedulera CPU (w tym czas rzeczywisty, batch i idle) oraz priorytet w jej obrębie
  • wymaganą dokładność timerów wyzwalanych przez jądro
  • capabilities i securebits
  • nazwę usługi intepretowaną przez PAM i tcp-wrappers
  • czy wydzielać prywatny katalog /tmp/
  • podobnie, które katalogi mają być udostępniane tylko do odczytu, do zapisu, a które w ogóle niedostępne (niezależnie od globalnej dostępności)
  • czy zająć dla tego procesu nazwę na szynie D-Bus
  • zawartość środowiska dla usługi
  • użytkownik, grupy, katalog chroot()

Powyższe to opcje udostępniane przez jądro Linuksa. Systemd ściśle się integrując daje wygodny dostęp i ustalanie parametrów bez konieczności wywoływania tabunu programów pomocniczych.

Poprzednio: Wstęp ; Następnie: Cele i migawki.

Comments


Comments powered by Disqus