«

»

Zář 12

Spravovanie služieb pomocou systemd

Systemdsystemd-logo je kontroverzný init démon navrhnutý priamo pre linux. Je spúšťaný ako prvý proces, čiže ako PID 1 počas zavádzania. Ide o koreňový proces, ktorý sa snaží o zrýchlenie bootovania pomocou paralelného či odloženého spúšťania procesov. Ako taký má veľa výhod. Jednou z nich sú šablóny, vďaka ktorým je veľmi zjednodušené vytváranie nových služieb. Ďalej dokáže automaticky riešiť závislosti, i tie cyklické, sledovať stav a v prípade potreby obmedziť procesy, využitie CPU či RAM. Jeho súčasťou je i journald určený pre uchovávanie logov, a ktorý môže byť, keď si jeho veľkosť neustrážime, nepríjemným spoločníkom. Nielen kvôli zaberaniu miesta, ale i rýchlosti načítania. Veľmi stručný popis ako obmedziť veľkosť bol spomínaný v článku Need for speed alebo Zavádzanie pre netrpezlivých v časti Úprava /etc/systemd/journald.conf.
V tomto článku si predstavíme ako služby spravovať: povolenie, zakázanie, štart, pozastavenie, reštart, znovu-načítanie, maskovanie, odmaskovanie. Plus si povieme zopár užitočných príkazov pre journald.

Súbory nainštalovaných služieb sú lokalizované na štyroch miestach: /usr/lib/systemd/system/ pre systémom nainštalované služby, /usr/lib/systemd/user/ pre užívateľské. Tieto dve zložky by užívateľ nemal svojvoľne upravovať. /etc/systemd/system/ pre užívateľmi vytvorené služby a ~/.systemd/user/ pre každého užívateľa zvlásť. Po každej zmene v konfigurácii v systemd či konkrétnej služby sa musia opätovne načítať pomocou sudo systemctl daemon-reload pre systemd, ktorý aktualizuje všetky jednotky alebo sudo systemctl reload služba.service (systemctl –user stop služba.service) pre službu aktualizáciou zmeneného konfiguračného súboru.

 

Manuálové stránky pre systemd, systemd-analyze, systemd.service, systemd.unit, systemd-journald.service, systemctl, journalctl, signal:

man systemd
man systemd-analyze
man systemd.service
man systemd.unit
man systemd-journald.service
man systemctl
man journalctl
man signal

 

Zistenie stavu systému:

systemctl status
systemctl is-system-running

 

Výpis bežiacich služieb:

systemctl
systemctl list-units

 

Výpis všetkých služieb:

systemctl --all --type service

 

Výpis neúspešne načítaných služieb:

systemctl --failed

 

Manuálny reset neúspešne načítaných služieb:

sudo systemctl reset-failed

 

Výpis súborov nainštalovaných jednotiek:

systemctl list-unit-files

 

Znovu-načítanie systemd:

sudo systemctl daemon-reload

 

Vypnutie systému:

sudo systemctl poweroff

 

Reštart systému:

sudo systemctl reboot

 

Okamžité ukončenie služby:

systemctl kill --signal 9 služba
systemctl kill --signal 9 služba.service
systemctl kill --signal 9 ModemManager
systemctl kill --signal 9 ModemManager.service

 

Zistenie času potrebného na načítanie systému:

systemd-analyze
systemd-analyze time

 

Zistenie času načítania jednotlivých služieb:

systemd-analyze blame

 

Zistenie kritického úseku (úsekov) počas načítania systému:

systemd-analyze critical-chain

 

Grafický rozpis načítania systému:

systemd-analyze plot > /cesta/ku/plot.svg
systemd-analyze plot > ~/plot.svg

 

Zistenie veľkosti journald:

journalctl --disk-usage

 

Výpis všetkých sedení:

journalctl --list-boots

 

Výpis logov journald:

journalctl -xb

 

Výpis logov bez stránkovania:

journalctl -xb --no-pager

 

Výpis kompletných logov:

journalctl -o verbose -xb

 

Výpis logov z dnešného dňa:

journalctl --since=today

 

Výpis logov zo včerajšieho dňa:

journalctl --since=yesterday

 

Výpis logov pre presne stanovené dni:

journalctl --since=-3d --until=-1d

 

Výpis logov pre užívateľa:

journalctl -b _UID=1000

 

Výpis logov pre konkrétny program (v tomto prípade pacman):

journalctl -b -u pacman

 

Výpis kompletných logov pre konkrétny program:

journalctl -o verbose -xb -u pacman

 

Výpis logov pre konkrétny disk či oddiel (v tomto prípade je to sda):

journalctl /dev/sda

 

Zistenie závislostí:

systemctl list-dependencies služba
systemctl list-dependencies služba.service
systemctl list-dependencies ModemManager
systemctl list-dependencies ModemManager.service

 

Zistenie stavu služby:

systemctl status služba
systemctl status služba.service
systemctl status ModemManager
systemctl status ModemManager.service

 

Zistenie stavu služby v užívateľskom režime:

systemctl --user status služba
systemctl --user status služba.service
systemctl --user status ModemManager
systemctl --user status ModemManager.service

 

Zistenie, či je služba povolená:

systemctl is-enabled služba
systemctl is-enabled služba.service
systemctl is-enabled ModemManager
systemctl is-enabled ModemManager.service

 

Zistenie, či je služba aktívna:

systemctl is-active služba
systemctl is-active služba.service
systemctl is-active ModemManager
systemctl is-active ModemManager.service

 

Zistenie, či načítanie služby nezlyhalo:

systemctl is-failed služba
systemctl is-failed služba.service
systemctl is-failed ModemManager
systemctl is-failed ModemManager.service

 

Výpis pomoci pre službu:

systemctl help služba
systemctl help ModemManager
systemctl help služba.service
systemctl help ModemManager.service

 

Povolenie služby:

sudo systemctl enable služba
sudo systemctl enable služba.service
sudo systemctl enable ModemManager
sudo systemctl enable ModemManager.service

 

Povolenie služby v užívateľskom režime:

systemctl --user enable služba
systemctl --user enable služba.service
systemctl --user enable ModemManager
systemctl --user enable ModemManager.service

 

Zakázanie služby:

sudo systemctl disable služba
sudo systemctl disable služba.service
sudo systemctl disable ModemManager
sudo systemctl disable ModemManager.service

 

Zakázanie služby v užívateľskom režime:

systemctl --user disable služba
systemctl --user disable služba.service
systemctl --user disable ModemManager
systemctl --user disable ModemManager.service

V prípade, že je novo-polená alebo opätovne povolená služba potrebná okamžite, spustíme ju pomocou start.

 

Štart služby:

sudo systemctl start služba
sudo systemctl start služba.service
sudo systemctl start ModemManager
sudo systemctl start ModemManager.service

 

Štart služby v užívateľskom režime:

systemctl --user start služba
systemctl --user start služba.service
systemctl --user start ModemManager
systemctl --user start ModemManager.service

 

Pozastavenie služby:

sudo systemctl stop služba
sudo systemctl stop služba.service
sudo systemctl stop ModemManager
sudo systemctl stop ModemManager.service

 

Pozastavenie služby v užívateľskom režime:

systemctl --user stop služba
systemctl --user stop služba.service
systemctl --user stop ModemManager
systemctl --user stop ModemManager.service

 

Reštart služby:

sudo systemctl restart služba
sudo systemctl restart služba.service
sudo systemctl restart ModemManager
sudo systemctl restart ModemManager.service

 

Reštart služby v užívateľskom režime:

systemctl --user restart služba
systemctl --user restart služba.service
systemctl --user restart ModemManager
systemctl --user restart ModemManager.service

 

Znovu-načítanie služby:

sudo systemctl reload služba
sudo systemctl reload služba.service
sudo systemctl reload ModemManager
sudo systemctl reload ModemManager.service

 

Znovu-načítanie služby v užívateľskom režime:

systemctl --user reload služba
systemctl --user reload služba.service
systemctl --user reload ModemManager
systemctl --user reload ModemManager.service

 

Maskovanie služby:

sudo systemctl mask služba
sudo systemctl mask služba.service
sudo systemctl mask ModemManager
sudo systemctl mask ModemManager.service

 

Maskovanie služby v užívateľskom režime:

systemctl --user mask služba
systemctl --user mask služba.service
systemctl --user mask ModemManager
systemctl --user mask ModemManager.service

 

Odmaskovanie služby:

sudo systemctl unmask služba
sudo systemctl unmask služba.service
sudo systemctl unmask ModemManager
sudo systemctl unmask ModemManager.service

 

Odmaskovanie služby v užívateľskom režime:

systemctl --user unmask služba
systemctl --user unmask služba.service
systemctl --user unmask ModemManager
systemctl --user unmask ModemManager.service

V prípade, že je služba maskovaná, pre okamžité spustenie sa musí najskôr odmaskovať. A až potom sa dá spustiť. Inak sa objaví táto chybová hláška:

Failed to start ModemManager.service: Unit ModemManager.service is masked.

 

Nebojte se systemd na root.cz, Seriál: Systemd na abclinuxu.cz.

O autorovi

lombardo1981

Ja som proste ja. Baba zamilovaná do Archu, kyberpunku, metalu, spevu a Slovenských čuvačov.

Napsat komentář

%d blogerům se to líbí: