Správa služeb pomocí systemctl na Vašem VPS
Na Vašem VPS běží programy, které musí být neustále k dispozici: SSH server, webový server, databáze. Takovým programům se říká služby. Na Debianu, Ubuntu, AlmaLinuxu a Rocky Linuxu je spouští a hlídá systemd a systemd ovládáte příkazem systemctl. Toto jsou příkazy, které budete potřebovat nejčastěji.
Stav služby
systemctl status nginx
Příponu .service můžete vynechat. Výstup čtěte shora dolů:
- Tečka před názvem je zelená, pokud služba běží, bílá, pokud je zastavená, a červená, pokud selhala.
- Loaded udává, zda se služba spouští při startu systému (
enabled), nebo ne (disabled). - Active udává, zda služba právě běží (
active (running)), je zastavená (inactive (dead)) nebo selhala (failed), a od kdy. - Úplně dole najdete poslední řádky z protokolu služby. Často se tam už dočtete, proč něco nefunguje.
Spuštění, zastavení a opětovné načtení
| Příkaz | Co dělá |
|---|---|
sudo systemctl start nginx | Spustí službu nyní |
sudo systemctl stop nginx | Zastaví službu nyní |
sudo systemctl restart nginx | Zastaví službu a znovu ji spustí |
sudo systemctl reload nginx | Znovu načte konfiguraci bez zastavení služby |
Rozdíl mezi restart a reload je důležitý. Při restartu se služba na chvíli zastaví, a pokud je v nové konfiguraci chyba, už se nespustí a Váš web přestane fungovat. Při reloadu služba běží dál; nginx si při chybě ponechá původní konfiguraci. Proto nejprve konfiguraci otestujte (sudo nginx -t, sudo sshd -t) a teprve potom použijte reload. Ne každá služba reload podporuje; sudo systemctl reload-or-restart zvolí vhodnou možnost sám.
Při startu systému: enable a disable
Spuštění a „spouštění při startu systému“ jsou dvě různé věci. Pokud službu spustíte pouze příkazem start, po příštím restartu, například kvůli aktualizaci jádra, už poběží jen tehdy, když je zároveň povolená.
| Příkaz | Co dělá |
|---|---|
sudo systemctl enable --now nginx | Spustí službu nyní a od této chvíle i při každém startu systému. Použijte to pro novou službu |
sudo systemctl disable --now nginx | Zastaví službu nyní a při startu systému ji už nespouští |
systemctl is-enabled nginx | Ukáže, zda se služba spouští při startu systému |
Co je špatně? A co běží?
systemctl --failed
Tento příkaz zobrazí všechny služby, které selhaly. Seznam by měl být prázdný. Zkontrolujte ho po každém restartu a každém upgradu. Jakmile problém vyřešíte, hlášení odstraníte příkazem sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningzobrazí všechny běžící služby. Pokud některou neznáte, zjistěte, k čemu slouží. Služba, kterou nepotřebujete, je zbytečná vstupní brána.systemctl list-timerszobrazí naplánované úlohy systemd včetně toho, kdy naposledy proběhly a kdy proběhnou znovu. Uvidíte tak například, zda běží časovače pro automatické aktualizace nebo obnovu certifikátů.
Protokoly služby
Chcete-li vidět víc než pár řádků v systemctl status, použijte journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
První příkaz zobrazí vše od nginx za poslední hodinu, druhý pouze chyby od posledního restartu. Další příkazy najdete v článku Čtení logů pomocí journalctl a docker logs.
Úprava nastavení služby
Unit soubor balíčku (v /usr/lib/systemd/system/) nikdy neupravujte, protože ho aktualizace přepíše. Použijte sudo systemctl edit nginx: vytvoří se malý soubor obsahující pouze Vaše změny a systemd ho znovu načte. Výslednou platnou konfiguraci zobrazíte příkazem systemctl cat nginx.
sudo systemctl reboot nebo tlačítkem Restartovat na obrazovce VPS. Vynucené vypnutí je jako vytažení zástrčky: služby nedostanou příležitost řádně se ukončit a databáze se může poškodit. Viz Obrazovka VPS: zapnutí a vypnutí, grafy, systém a protokol.Na AlmaLinuxu a Rocky Linuxu funguje systemctl úplně stejně, jen se některé služby jmenují jinak: služba SSH se tam jmenuje sshd místo ssh, Apache se jmenuje httpd a firewall firewalld.
Chcete se dozvědět víc? Absolvujte bezplatný kurz VPS a správa linuxového serveru, lekci 6.1 Správa služeb pomocí systemd nebo lekci 6.2 Čtení logů pomocí journalctl.
