This post is from a low-reputation account and contains an unverified outbound link. Be cautious before clicking external links.

Systemd - kompendium

Words
369
Reading
2 min
Listen
Play
8y

systemd jest menadżerem systemu i usług dla Linuksa który zastąpił w większości dystrybucji (Arch Linux, CentOS, RedHat, Fedora, Debian, Ubuntu, SUSE) stary SysVinit. Odpowiedzialny jest m.in. za start poszczególnych usług systemowych podczas uruchamiania systemu. 

Funkcje systemd

  • Możliwość równoległego uruchamiania usług
  • Uruchamianie serwisów za pomocą aktywacji gniazda
  • Uruchamianie usług na żądanie
  • Śledzenie działania procesów przy pomocy grup kontrolnych cgroups
  • Wsparcie dla zachowywania i przywracania stanu usług w systemie
  • Utrzymanie punktów montowania i automatycznego montowania w systemie
  • Transakcyjna implementacja logiki kontroli usług, oparta na zależnościach
  • Kompatybilność z SysVinit

Pliki konfiguracyjne:

Cała konfiguracja systemd zapisana jest w plikach zwanych "unitami". Mamy 12 typów plików konfiguracyjnych:
.service, .socket, .device, .mount, .automount, .swap, .target, .path, .timer, .snapshot, .slice, .scope
Dokładny opis znajduje się tutaj: https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

Unity znajdują się w następujących katalogach:
/etc/systemd/system - pliki z tej lokalizacji są przetwarzane w pierwszej kolejności.
/lib/systemd/system - oryginalne pliki konfiguracyjne które przeważnie są linkowane do /etc/systemd/system

Komendy


Cele uruchomienia
systemctl list-units --type=target - lista wszystkich możliwych trybów (celów) uruchamiania Linuxa 
systemctl get-default - pokazuje w jakim trybie (celu) domyślnie uruchamia się Linux
systemctl set-default nazwa_celu - zmiana domyślnego trybu uruchamiania Linuxa 
systemctl isolate nazwa_celu - przełączenie trybu/celu w danym momencie
systemd-analyze blame - lista aktualnie uruchomionych usług.

Podstawowe komendy na przykładzie serwera www nginx
systemctl list-units - lista wszystkich aktywnych usług/jednostek które systemd przetwarza. 
systemctl list-unit-files – lista wszystkich usług/jednostek wraz ze statusem
systemctl --state=failed - lista usług, których nie udało się uruchomić podczas startu systemu
systemctl start nginx – uruchamianie usługi
systemctl stop nginx – zatrzymywanie usługi
systemctl restart nginx – restart usługi
systemctl reload nginx – przeładowanie konfiguracji danej usługi

systemctl enabled nginx - włączanie usługi
systemctl disable nginx - wyłączanie usługi 
systemctl is-enabled nginx - sprawdzanie czy usługa jest włączona 
systemctl is-active nginx - sprawdzanie czy usługa jest aktywna/uruchomiona w danym momencie
systemctl status nginx - sprawdzanie statusu usługi
systemctl cat nginx - sprawdzanie definicji/konfiguracji usługi 

Analiza
journalctl -b - zdarzenia od czasu ostatniego uruchomienia systemu
journalctl -f - Tak jak komenda tail -f - 10 ostatnich zdarzeń 

Ręczne dodawanie usługi

Jeśli chcemy stworzyć i uruchomić przy starcie systemu daną usługę, tworzymy plik jednostki np: /etc/systemd/system/test.service o przykładowej zawartości:

[Unit]
Description=Moj program
After=network.target
After=syslog.target

[Install] WantedBy=multi-user.target
[Service] User=root Group=root ExecStart=/test/test.sh

Następnie włączamy usługę: systemctl enable test 

Systemd - kompendium | Ecency