Diagnostyka usług systemd: systemctl status, restart, enable i journalctl -u
Nauczysz się metodycznie sprawdzać stan usług systemd, analizować ich logi oraz rozróżniać uruchomienie usługi od włączenia jej przy starcie systemu.
Wróć do listy lekcji1. Krótka teoria
Usługa zarządzana przez systemd jest opisana jednostką, zwykle z końcówką .service. Pierwszym krokiem diagnostyki powinno być systemctl status nazwa, które pokazuje stan jednostki, ostatni wynik uruchomienia, PID procesu i kilka najnowszych komunikatów. Stan active (running) oznacza działającą usługę, a failed wskazuje, że próba działania zakończyła się błędem. systemctl is-active pozwala szybko sprawdzić bieżący stan, natomiast systemctl is-enabled odpowiada na inne pytanie: czy jednostka ma uruchamiać się automatycznie podczas startu systemu. Polecenia start i restart wpływają na stan bieżący, a enable zmienia konfigurację kolejnych uruchomień systemu. Po nieudanym starcie trzeba sprawdzić pełniejsze logi przez journalctl -u nazwa. Warto ograniczyć je do bieżącego uruchomienia systemu, ostatnich wpisów albo konkretnego czasu. Restart nie jest metodą diagnozy samą w sobie: przed nim należy przeczytać status i logi, a po nim ponownie zweryfikować usługę. Jeśli zmieniono plik jednostki systemd, należy wykonać systemctl daemon-reload; nie jest to potrzebne po każdej zmianie konfiguracji samej aplikacji.
2. Przykłady komend
systemctl status sshd
Pokazuje szczegółowy stan usługi sshd i ostatnie komunikaty.
$ systemctl status sshd
systemctl is-active sshd
Zwraca bieżący stan aktywności usługi.
$ systemctl is-active sshd
active
systemctl is-enabled sshd
Sprawdza, czy usługa ma uruchamiać się przy starcie systemu.
$ systemctl is-enabled sshd
enabled
sudo systemctl restart crond
Restartuje usługę crond; należy używać po świadomej weryfikacji.
$ sudo systemctl restart crond
sudo systemctl enable crond
Włącza automatyczne uruchamianie crond przy starcie systemu.
$ sudo systemctl enable crond
sudo systemctl enable --now crond
Jednocześnie włącza autostart i uruchamia usługę teraz.
$ sudo systemctl enable --now crond
journalctl -u sshd -n 50 --no-pager
Pokazuje 50 ostatnich wpisów usługi sshd bez stronicowania.
$ journalctl -u sshd -n 50 --no-pager
journalctl -u sshd -b
Pokazuje logi usługi sshd z bieżącego uruchomienia systemu.
$ journalctl -u sshd -b
sudo systemctl daemon-reload
Wczytuje ponownie definicje jednostek po zmianie pliku unit.
$ sudo systemctl daemon-reload
3. Zadanie praktyczne
crond poleceniami systemctl status crond, systemctl is-active crond i systemctl is-enabled crond. Następnie wyświetl 30 ostatnich wpisów przez journalctl -u crond -n 30 --no-pager. Zapisz osobno odpowiedzi na pytania: „czy usługa działa teraz?” i „czy uruchomi się po restarcie systemu?”. Jeśli pracujesz na maszynie przeznaczonej do ćwiczeń i możesz bezpiecznie przerwać działanie crond, wykonaj sudo systemctl restart crond, po czym ponownie sprawdź status i logi. Nie restartuj zdalnie usługi SSH używanej do bieżącego połączenia.
4. Typowe błędy
- Mylenie stanu active ze stanem enabled.
- Restartowanie usługi przed przeczytaniem statusu i zachowaniem informacji o błędzie.
- Zakładanie, że enable natychmiast uruchamia zatrzymaną usługę.
- Sprawdzanie tylko krótkiego fragmentu logów widocznego w systemctl status.
- Pomijanie nazwy jednostki przy filtrowaniu dziennika przez journalctl -u.
- Wykonywanie daemon-reload po każdej zmianie konfiguracji aplikacji.
- Restartowanie sshd podczas zdalnej pracy bez sprawdzenia konfiguracji i dostępu awaryjnego.
5. Podsumowanie
Diagnostykę usługi zacznij od systemctl status, następnie rozdziel sprawdzenie bieżącej aktywności przez is-active od autostartu przez is-enabled. Pełniejsze komunikaty znajdziesz w journalctl -u. Restart wykonuj świadomie i zawsze sprawdzaj jego wynik. enable --now łączy włączenie autostartu z natychmiastowym uruchomieniem.