
Opanowanie niestandardowych usług systemd w systemie Linux: kompleksowy przewodnik
Systemd jest solidnym i dynamicznym systemem init w różnych dystrybucjach Linuksa. Ułatwia wykonywanie programów, zarządzanie zasobami i ogólną kontrolę systemu. Ten przewodnik pomoże Ci wykorzystać pełen potencjał Systemd poprzez tworzenie spersonalizowanych jednostek usługowych w Ubuntu.
Zrozumienie jednostek usług Systemd
W swojej istocie jednostka usługi to znormalizowany plik, który określa konfigurację niezbędną do wykonania określonej aplikacji. Zawiera metadane dotyczące programu, dyrektywy wykonania i szczegóły dotyczące struktury dostępu Systemd podczas sesji.
Każdy demon w środowisku obsługiwanym przez Systemd jest zarządzany przez plik usługi. Na przykład OpenSSH działa przy użyciu ssh.service
jednostki znajdującej się w, /etc/systemd/system/
aby określić jego funkcjonowanie w systemach Debian i Ubuntu.

Ogólnie rzecz biorąc, plik jednostki usługi jest podzielony na trzy główne sekcje: Unit
, Service
i Install
.Unit
Sekcja oznacza metadane i zależności aplikacji, podczas gdy Service
sekcja określa jej lokalizację i metodologię wykonywania. Podsumowując, Install
sekcja wyjaśnia, kiedy aplikacja może zostać zainicjowana przez Systemd.
Tworzenie niestandardowej usługi na poziomie systemu
Usługi niestandardowe są nieocenione w automatyzacji zadań wymagających podwyższonych uprawnień lub wykorzystujących timery Systemd. Typowy przykład obejmuje zapewnienie, że serwer Minecraft uruchamia się niezawodnie po ponownym uruchomieniu systemu.
Kroki tworzenia niestandardowej usługi na poziomie systemu
- Utwórz plik jednostki Systemd: Zacznij od utworzenia nowego pliku jednostki w swoim katalogu domowym.
- Wstaw konfigurację: Dodaj następujący szablon wewnątrz nowego pliku jednostki. Służy on jako prawidłowa konfiguracja podstawowa:
- Dostosuj swoją usługę: Dostosuj pola
Description
iExecStart
, podając szczegóły istotne dla Twojej usługi. - Przenieś plik: Zapisz i przenieś go do katalogu usługi:
- Przeładuj demona Systemd: Wykonaj polecenie, aby przeładować usługi:
- Rozpocznij swoją usługę: Zainicjuj swoją niestandardową usługę na poziomie systemu:
- Sprawdź funkcjonalność: Potwierdź, że Twoja usługa działa:
nano ~/my-system-app.service
[Unit] Description=My First Service After=network.target [Service] Type=simple ExecStart=/path/to/bin Restart=always [Install] WantedBy=multi-user.target
sudo cp ~/my-system-app.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start my-system-app.service
systemctl status my-system-app.service

Ustanawianie niestandardowej usługi na poziomie użytkownika
Systemd obsługuje tworzenie usług bez uprawnień roota przy użyciu Systemd-user, umożliwiając użytkownikom innym niż root efektywne zarządzanie aplikacjami osobistymi, przy jednoczesnym zwiększeniu bezpieczeństwa poprzez zminimalizowanie dostępu roota.
Jak utworzyć niestandardową usługę na poziomie użytkownika:
- Konfiguracja pliku jednostki: Utwórz nowy plik jednostki w katalogu domowym.
- Wstaw podstawową konfigurację: Użyj następującego frameworka w pliku jednostki:
- Dostosuj ExecStart: Upewnij się, że ścieżka określona w
ExecStart
jest dostępna dla Twojego konta użytkownika. - Utwórz lokalny katalog systemowy użytkownika:
- Skopiuj plik jednostki: Przenieś swoją niestandardową jednostkę usługową do katalogu lokalnego:
- Przeładuj Systemd dla użytkownika: Sprawdź, czy Systemd sprawdza katalog użytkownika pod kątem zmian:
- Sprawdź status usługi: Upewnij się, że Twoja usługa użytkownika jest prawidłowo rozpoznana:
nano ~/my-user-app.service
[Unit] Description=My First User Service After=graphical-session.target [Service] Type=simple ExecStart=/path/to/bin [Install] WantedBy=default.target
mkdir -p ~/.config/systemd/user/
cp ~/my-user-app.service ~/.config/systemd/user/
systemctl daemon-reload --user
systemctl --user status my-user-app.service

Optymalizacja Twojej niestandardowej usługi Systemd
Elastyczność Systemd pozwala użytkownikom na precyzyjne dostrajanie parametrów i zachowań usług.
Integrowanie zmiennych środowiskowych
Zmienne środowiskowe wzbogacają programy Linux o dodatkowy kontekst bez konieczności modyfikowania plików konfiguracyjnych, a Systemd obsługuje ich włączanie do jednostek usługowych.
- Wyłącz usługę: Zacznij od wyłączenia usługi, którą chcesz zmodyfikować:
- Edytuj plik usługi: Otwórz plik jednostki w preferowanym edytorze tekstu:
- Modyfikuj sekcję Usługa: W
[Service]
sekcji uwzględnij: - Przeładuj demona: Zapisz i przeładuj demona Systemd, aby zastosować zmiany:
- Uruchom ponownie usługę: Uruchom ponownie, używając nowej zmiennej środowiskowej:
systemctl --user disable --now my-user-app.service
sudo nano ~/.config/systemd/user/my-user-app.service
Environment="VARIABLE_NAME=VALUE"
systemctl --user daemon-reload
systemctl --user start my-user-app.service

Ograniczanie wykorzystania zasobów
Systemd udostępnia mechanizmy regulujące wykorzystanie zasobów przez usługi w celu zagwarantowania sprawiedliwego wykorzystania.
- Wyłącz usługę docelową: Zacznij od jej całkowitego wyłączenia:
- Edytuj plik jednostki: Otwórz plik usługi za pomocą:
- Dodaj limity zasobów: Na przykład, aby ograniczyć pamięć:
- Załaduj ponownie zmiany jednostki: Załaduj ponownie nowe ustawienia:
- Monitoruj wykorzystanie zasobów: Śledź wydajność usługi za pomocą:
sudo systemctl disable my-system-app.service
sudo nano /etc/systemd/system/my-system-app.service
MemoryHigh=SIZE
sudo systemctl daemon-reload
systemd-cgtop

Wniosek
Poznanie Systemd odblokowuje znaczący potencjał zarządzania procesami w systemie Linux. Tworząc niestandardowe usługi, od automatyzacji zadań po zarządzanie wydajnością zasobów, możesz znacznie zwiększyć interoperacyjność i wydajność swojego systemu. Zanurz się głębiej w Systemd i jego szeroki zakres możliwości, i rozważ zbadanie porównawczych zalet Run0 w porównaniu z Sudo, aby uzyskać bardziej szczegółowe zrozumienie.
Źródło obrazu: Mikhail Fesenko przez Unsplash. Wszystkie modyfikacje i zrzuty ekranu autorstwa Ramces Red.
Często zadawane pytania
1. Jakie są zalety korzystania z usług Systemd w porównaniu z tradycyjnymi systemami init?
Systemd oferuje równoległe uruchamianie usług, zarządzanie zależnościami i ujednolicone podejście do obsługi usług, co zwiększa ogólną wydajność i niezawodność w porównaniu z tradycyjnymi systemami init.
2. Czy mogę utworzyć wiele usług dla jednej aplikacji?
Tak, można utworzyć wiele jednostek usługowych dla jednej aplikacji, aby zarządzać różnymi aspektami, np.uruchamiać ją z różnymi konfiguracjami lub w określonych warunkach.
3. Jak rozwiązywać problemy z usługami Systemd?
Możesz rozwiązywać problemy z usługami Systemd za pomocą poleceń, takich jak journalctl -u my-service-name.service
sprawdzanie dzienników oraz systemctl status my-service-name.service
badanie bieżącego stanu i komunikatów o błędach.
Dodaj komentarz ▼