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 --versionSprawdzanie 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 nginxUruchamianie 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 nginxWłą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 nginxWyś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ługilist-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=serviceOdczytywanie 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.targetTworzenie 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 myappAutomatyczne 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 zeraRestart=always— za każdym razem, gdy usługa się zatrzymaRestartSec=5— czas oczekiwania przed ponowną próbą
[Service]
ExecStart=/usr/bin/myapp
Restart=always
RestartSec=5Najlepsze 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-failuredo 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,reloadenable/disabledo zarządzania zachowaniem podczas rozruchujournalctl -udo wyświetlania dzienników usług- Własne pliki jednostek
.servicez 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
- Zarządzanie użytkownikami i grupami
- Monitorowanie procesów systemowych
- Zadania zaplanowane za pomocą Cron
- Zarządzanie usługami systemowymi za pomocą systemd