Systemd to menadżer systemu i usług, zamiennik init, SysVinit czy Upstart znany z RHEL6. To pierwszy proces, który startuje podczas ładowania systemu i ostatni proces, który się zamyka w czasie wyłączania systemu.
Cechy systemd:
- Możliwość równoległego uruchamiania usług.
- Uruchamianie serwisów za pomocą aktywacji gniazda (socketu) i metodą D-Bus.
- 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.
Socket (gniazdo) to metoda komunikacji pozwalająca na porozumiewanie jednego procesu działającego na lokalnym systemie z drugim procesem działającym na tym samym lub zdalnym systemie.
D-Bus to inna metoda komunikacji pozwalająca na porozumiewanie się ze sobą wielu procesów uruchomionych równolegle w tym samym systemie lub systemie zdalnym.
Równoległe uruchamianie usług przez systemd ma swoje odbicie w bardziej płaskim drzewie procesów co może być potwierdzone komendą pstree.
# pstree -pu
systemd(1)─┬─ModemManager(616)─┬─{ModemManager}(647)
│ └─{ModemManager}(664)
├─NetworkManager(749)─┬─{NetworkManager}(913)
│ └─{NetworkManager}(923)
├─abrt-watch-log(5616)
├─abrt-watch-log(5660)
├─abrtd(5593)
├─agetty(1340)
├─alsactl(615)
├─atd(14593)
├─auditd(13824)─┬─audispd(13834)─┬─sedispatch(13844)
│ │ └─{audispd}(13845)
│ └─{auditd}(13833)
├─avahi-daemon(8851,avahi)───avahi-daemon(8852)
├─chronyd(24349,chrony)
├─crond(25603)
├─cupsd(13709)
├─dbus-daemon(630,dbus)
├─dnsmasq(2807,nobody)───dnsmasq(2808,root)
├─dnsmasq(25094,nobody)───dnsmasq(25095,root)
├─gssproxy(14201)─┬─{gssproxy}(14202)
│ ├─{gssproxy}(14203)
│ ├─{gssproxy}(14204)
│ ├─{gssproxy}(14205)
│ └─{gssproxy}(14206)
├─httpd(4303)─┬─httpd(9317,apache)
│ ├─httpd(9318,apache)
│ ├─httpd(11444,apache)
│ ├─httpd(16316,apache)
│ ├─httpd(16317,apache)
│ ├─httpd(16651,apache)
│ ├─httpd(16711,apache)
│ ├─httpd(17668,apache)
│ ├─httpd(32502,apache)
│ └─httpd(32503,apache)
Podstawową komendą do pracy z systemd jest systemctl. Niektóre opcje tego polecenia przedstawia tabela poniżej.
Opcja | Opis |
demon-reload | Czyta ponownie, przeładowuje wszystkie pliki konfiguracyjne unitów i tworzy ponownie całe drzewo zależności. |
enable / disable | Aktywuje lub deaktywuje unit w autostarcie systemu. |
get-default (set-default) | Pokazuje (ustawia) domyślny cel do załadowania. |
get-property (set-property) | Zwraca (ustawia) wartość ustawienia. |
is-active | Sprawdza czy unit jest uruchomiony. |
is-enabled | Wyświetla czy unit jest dodany do autostartu. |
is-failed | Sprawdza czy unit jest w stanie awarii. |
isolate | Zmienia stan uruchamiania systemu (podobne do runleveli w SysVinit). |
kill | Zabija wszystkie procesy unitu. |
list-dependencies | Listuje drzewo zależności dla unitu. |
list-sockets |
Listuje unity typu gniazdo (socket). |
list-unit-files | Listuje zainstalowane pliki unitów. |
list-units | Listuje znane unity. Jest to domyślna opcja gdy systemctl jest uruchamiane bez opcji. |
mask (unmask) | Zakazuje (zezwala) na automatyczną i ręczną aktywację unitu. |
reload | Zmusza działający unit do ponownego przeczytania pliku konfiguracyjnego. |
restart | Zatrzymuje działający unit i restartuje go. |
show | Pokazuje właściwości unitu. |
start (stop) | Uruchamia (zatrzymuje) unit. |
status | Wyświetla informacje o statusie unitu. |