Správa služieb pomocou systemctl na vašom VPS
Na vašom VPS bežia programy, ktoré musia byť stále k dispozícii: SSH server, webový server, databáza. Takéto programy sa nazývajú služby. V systémoch Debian, Ubuntu, AlmaLinux a Rocky Linux ich spúšťa a stráži systemd a systemd ovládate príkazom systemctl. Toto sú príkazy, ktoré budete potrebovať najčastejšie.
Stav služby
systemctl status nginx
Príponu .service môžete vynechať. Výstup čítajte zhora nadol:
- Bodka pred názvom je zelená, ak služba beží, biela, ak je zastavená, a červená, ak zlyhala.
- Loaded udáva, či sa služba spúšťa pri štarte systému (
enabled) alebo nie (disabled). - Active udáva, či práve beží (
active (running)), je zastavená (inactive (dead)) alebo zlyhala (failed), a od kedy. - V spodnej časti sú posledné riadky zo záznamov služby. Často tam už nájdete dôvod, prečo niečo nefunguje.
Spustenie, zastavenie a opätovné načítanie
| Príkaz | Čo robí |
|---|---|
sudo systemctl start nginx | Spustí službu teraz |
sudo systemctl stop nginx | Zastaví službu teraz |
sudo systemctl restart nginx | Zastaví službu a znova ju spustí |
sudo systemctl reload nginx | Znova načíta konfiguráciu bez zastavenia |
Rozdiel medzi restart a reload je dôležitý. Pri reštarte sa služba na chvíľu zastaví, a ak je v novej konfigurácii chyba, už sa nespustí a váš web prestane fungovať. Pri reloade služba beží ďalej; nginx si pri chybe ponechá starú konfiguráciu. Preto najprv otestujte konfiguráciu (sudo nginx -t, sudo sshd -t) a potom použite reload. Nie každá služba podporuje reload; sudo systemctl reload-or-restart si vyberie sama.
Pri štarte systému: enable a disable
Spustenie a „spustenie pri štarte systému“ sú dve rôzne veci. Ak službu spustíte len príkazom start, po ďalšom reštarte, napríklad kvôli aktualizácii jadra, už nebude bežať.
| Príkaz | Čo robí |
|---|---|
sudo systemctl enable --now nginx | Spustí službu teraz a odteraz aj pri štarte systému. Použite to pri novej službe |
sudo systemctl disable --now nginx | Zastaví službu teraz a pri štarte systému ju už nespúšťa |
systemctl is-enabled nginx | Zobrazí, či sa služba spúšťa pri štarte systému |
Čo je zle? A čo beží?
systemctl --failed
Tento príkaz zobrazí všetky zlyhané služby. Zoznam by mal byť prázdny. Skontrolujte ho po každom reštarte a každej aktualizácii systému. Keď problém vyriešite, hlásenie odstránite príkazom sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningzobrazí všetky bežiace služby. Ak niektorú nepoznáte, zistite, čo robí. Služba, ktorú nepotrebujete, je zbytočný vstupný bod.systemctl list-timerszobrazí naplánované úlohy systemd spolu s tým, kedy naposledy bežali a kedy sa spustia znova. Tak napríklad uvidíte, či fungujú časovače pre automatické aktualizácie alebo obnovu certifikátov.
Záznamy služby
Ak chcete vidieť viac než niekoľko riadkov v systemctl status, použite journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
Prvý príkaz zobrazí všetky záznamy nginx za poslednú hodinu, druhý len chyby od posledného reštartu. Ďalšie príkazy nájdete v článku Čítanie logov pomocou journalctl a docker logs.
Úprava nastavení služby
Unit súbor z balíka (v /usr/lib/systemd/system/) nikdy neupravujte, pretože ho aktualizácia prepíše. Použite sudo systemctl edit nginx: vytvorí sa malý súbor len s vašimi zmenami a systemd ho znova načíta. Čo napokon platí, zobrazíte príkazom systemctl cat nginx.
sudo systemctl reboot alebo tlačidlom Reštartovať na obrazovke VPS. Vynútené vypnutie je ako vytiahnuť zástrčku: služby nedostanú šancu korektne sa zastaviť a databáza sa môže poškodiť. Pozrite si článok Obrazovka VPS: zapnutie a vypnutie, grafy, systém a protokol.V systémoch AlmaLinux a Rocky Linux funguje systemctl úplne rovnako, len niektoré služby sa volajú inak: služba SSH sa tam volá sshd namiesto ssh, Apache sa volá httpd a firewall firewalld.
Chcete sa dozvedieť viac? Absolvujte bezplatný kurz Správa VPS a linuxových serverov, lekciu 6.1 Správa služieb pomocou systemd alebo lekciu 6.2 Čítanie logov pomocou journalctl.
