0Pricing
Linux Server Deployment & SSH Mastery · Lekcja

Zarządzanie usługami systemowymi za pomocą systemd

Będą Państwo kontrolować długo działające programy zasilające serwer Linux za pomocą systemd: uruchamiać, zatrzymywać, włączać i sprawdzać usługi, odczytywać ich logi przez journalctl oraz rozumieć rolę jednostek w zarządzaniu procesami.

Zarządzanie usługami systemowymi za pomocą systemd to bezpłatna lekcja Linux Server Deployment & SSH Mastery na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Linux Server Deployment & SSH Mastery, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Linux Server Deployment & SSH Mastery zawiera 4 lekcji w sumie.

Usługi a zwykłe procesy

Potrafisz już zarządzać pojedynczymi procesami i zaplanowanymi zadaniami. Jednak programy definiujące serwer — serwery WWW, bazy danych i SSH — działają jako usługi: demony działające w tle, które powinny uruchamiać się podczas rozruchu i ponownie startować po awarii.

We współczesnym systemie Linux usługami zarządza systemd, menedżer systemu i usług.

Czym zarządza systemd

systemd organizuje wszystko w jednostki. Najpopularniejszym typem jest jednostka .service, która opisuje sposób uruchamiania demona.

Polecenie systemctl jest głównym interfejsem służącym do sprawdzania stanu tych jednostek i zarządzania nimi.

systemctl --version

Sprawdzanie stanu usługi

systemctl status wyświetla informację, czy usługa działa, identyfikator jej głównego procesu, ostatnie wpisy w dzienniku oraz informację, czy jest włączona podczas rozruchu.

Zwykle jest to pierwsze polecenie uruchamiane podczas diagnozowania problemów z usługą.

systemctl status nginx

Uruchamianie i zatrzymywanie usług

Stan działania usługi kontrolujesz za pomocą poleceń start, stop i restart. Działają one natychmiast, ale nie zmieniają zachowania podczas rozruchu.

Użyj reload, gdy usługa obsługuje ponowne odczytanie konfiguracji bez zrywania połączeń.

sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl stop nginx

Włączanie usług podczas rozruchu

enable sprawia, że usługa uruchamia się automatycznie podczas rozruchu serwera, natomiast disable usuwa ją z procesu rozruchu. Nie zależy to od tego, czy usługa działa w tej chwili.

Praktyczna flaga --now umożliwia jednoczesne włączenie i uruchomienie usługi.

sudo systemctl enable nginx
sudo systemctl enable --now nginx
sudo systemctl disable nginx

Wyświetlanie usług

Aby sprawdzić, co jest zainstalowane i uruchomione, wyświetl pliki jednostek lub aktywne jednostki.

  • list-units --type=service — aktualnie załadowane usługi
  • list-unit-files --type=service — wszystkie zainstalowane usługi i ich stan włączenia
systemctl list-units --type=service --state=running
systemctl list-unit-files --type=service

Odczytywanie dzienników za pomocą journalctl

systemd zapisuje dane wyjściowe usług w dzienniku. Możesz go odpytywać za pomocą journalctl.

  • -u nginx — tylko ta usługa
  • -f — śledzenie na żywo
  • -e — przejście na koniec
sudo journalctl -u nginx -f
sudo journalctl -u ssh --since '1 hour ago'

Budowa pliku jednostki

Usługa jest definiowana przez plik jednostki, zwykle znajdujący się w /etc/systemd/system/ lub /lib/systemd/system/. Plik zawiera trzy kluczowe sekcje: [Unit], [Service] i [Install].

Wiersz ExecStart informuje systemd, jakie polecenie należy uruchomić.

[Unit]
Description=My App
After=network.target

[Service]
ExecStart=/usr/bin/myapp --port 8080
Restart=on-failure

[Install]
WantedBy=multi-user.target

Tworzenie własnej usługi

Aby uruchamiać własny program jako usługę, umieść plik jednostki w /etc/systemd/system/, przeładuj systemd, aby wykrył nowy plik, a następnie włącz i uruchom usługę.

Po każdej zmianie pliku jednostki wymagane jest wykonanie daemon-reload.

sudo nano /etc/systemd/system/myapp.service
sudo systemctl daemon-reload
sudo systemctl enable --now myapp

Automatyczne ponowne uruchamianie po awarii

Jedną z najlepszych funkcji systemd jest automatyczne odzyskiwanie działania. Dyrektywa Restart= informuje systemd, aby ponownie uruchomił usługę po jej awarii.

  • Restart=on-failure — tylko po zakończeniu z kodem różnym od zera
  • Restart=always — za każdym razem, gdy usługa się zatrzyma
  • RestartSec=5 — czas oczekiwania przed ponowną próbą
[Service]
ExecStart=/usr/bin/myapp
Restart=always
RestartSec=5

Najlepsze praktyki

Zarządzaj usługami z pewnością:

  • Rozróżniaj działanie w czasie pracy (start) od uruchamiania podczas rozruchu (enable)
  • Po edycji plików jednostek uruchamiaj daemon-reload
  • Do diagnozowania problemów używaj journalctl -u, a nie rozproszonych plików dzienników
  • Dodawaj Restart=on-failure do własnych aplikacji, aby zwiększyć ich odporność

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat systemd.

Podsumowanie

Potrafisz teraz zarządzać usługami serwera za pomocą systemd:

  • status, start, stop, restart, reload
  • enable/disable do zarządzania zachowaniem podczas rozruchu
  • journalctl -u do wyświetlania dzienników usług
  • Własne pliki jednostek .service z opcją Restart= zwiększającą odporność

Uzupełnia to umiejętności zarządzania procesami i zadaniami o obsługę długotrwale działających demonów.

Często zadawane pytania

Czy lekcja „Zarządzanie usługami systemowymi za pomocą systemd” jest bezpłatna?

Tak — pełny tekst „Zarządzanie usługami systemowymi za pomocą systemd” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Linux Server Deployment & SSH Mastery, przejdź na CoddyKit PRO. Kurs Linux Server Deployment & SSH Mastery zawiera 4 lekcji w sumie.

Co nauczysz się w „Zarządzanie usługami systemowymi za pomocą systemd”?

Będą Państwo kontrolować długo działające programy zasilające serwer Linux za pomocą systemd: uruchamiać, zatrzymywać, włączać i sprawdzać usługi, odczytywać ich logi przez journalctl oraz rozumieć r… Ćwiczysz Linux Server Deployment & SSH Mastery z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Linux Server Deployment & SSH Mastery?

Nie wymagamy żadnego doświadczenia. Linux Server Deployment & SSH Mastery w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Zarządzanie usługami systemowymi za pomocą systemd”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Linux Server Deployment & SSH Mastery?

Tak. Każda lekcja Linux Server Deployment & SSH Mastery zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Zarządzanie użytkownikami i grupami
  2. Monitorowanie procesów systemowych
  3. Zadania zaplanowane za pomocą Cron
  4. Zarządzanie usługami systemowymi za pomocą systemd
← Powrót do Linux Server Deployment & SSH Mastery