Tworzenie własnych usług systemd (.service) w systemie Linux – pełny poradnik
Systemd zarządza uruchamianiem i kontrolą usług (demonów) w nowoczesnych dystrybucjach Linuksa. Dzięki własnym plikom .service możesz łatwo:
- uruchamiać własne skrypty przy starcie
- pisać własne daemony
- restartować procesy po awarii
- ustawić zależności między usługami
📂 Gdzie umieścić własne pliki .service?
Lokalizacja dla użytkownika root:
/etc/systemd/system/
Dla usług tylko dla bieżącego użytkownika:
~/.config/systemd/user/
🧱 Krok 1: Przykładowy scenariusz
Masz skrypt bash w /home/admin/scripts/backup.sh, który chcesz uruchamiać jako usługę i mieć możliwość restartowania, monitorowania, a nawet uruchamiania automatycznie przy starcie systemu.

🛠️ Krok 2: Tworzenie pliku .service
sudo nano /etc/systemd/system/backup.service
Przykład zawartości:
[Unit]
Description=Codzienny skrypt backupu
After=network.target
[Service]
Type=simple
User=admin
ExecStart=/home/admin/scripts/backup.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
🔍 Co oznaczają pola?
| Pole | Znaczenie |
|---|---|
Description |
Opis usługi |
After=network.target |
Uruchom po dostępności sieci |
Type=simple |
Domyślny typ – proces w tle |
User=admin |
Użytkownik, który uruchamia usługę |
ExecStart |
Komenda do uruchomienia |
Restart=on-failure |
Automatyczny restart po błędzie |
WantedBy=multi-user.target |
Uruchom przy starcie systemu |
🔧 Krok 3: Załaduj usługę do systemd
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
🚀 Krok 4: Uruchamianie, zatrzymywanie, włączanie
- Uruchomienie:
sudo systemctl start backup.service
- Sprawdzenie statusu:
sudo systemctl status backup.service
- Włączenie autostartu:
sudo systemctl enable backup.service
- Zatrzymanie:
sudo systemctl stop backup.service
- Wyłączenie autostartu:
sudo systemctl disable backup.service
🧪 Krok 5: Diagnostyka problemów
Sprawdź logi usługi:
journalctl -u backup.service
Jeśli usługa nie działa poprawnie:
- sprawdź ścieżkę do skryptu
- upewnij się, że skrypt ma prawa do wykonania (
chmod +x) - sprawdź, czy
User=ma dostęp do katalogów i plików
🔐 Wskazówki bezpieczeństwa
- Jeśli uruchamiasz skrypt jako
root, zadbaj o jego bezpieczeństwo - Dla procesów niskiego ryzyka lepiej ustawić
User=nazwa_usera - Nie używaj
/tmpjako miejsca na logi bez kontroli dostępu
🔁 Automatyczne restartowanie usług po awarii
Dodaj w sekcji [Service]:
Restart=on-failure
RestartSec=5
To sprawi, że usługa będzie próbowała się uruchomić ponownie co 5 sekund po błędzie.
📌 Inne przydatne opcje
- ExecStop= – polecenie przy zatrzymaniu
- ExecReload= – polecenie przy przeładowaniu
- Environment=VAR=wartość – zmienne środowiskowe
- WorkingDirectory=/home/admin/ – katalog roboczy
✅ Podsumowanie
Tworzenie własnych plików .service w systemd pozwala Ci:
✅ Automatyzować procesy
✅ Monitorować i restartować skrypty
✅ Włączać usługi przy starcie systemu
✅ Profesjonalnie zarządzać własnym środowiskiem serwerowym lub desktopowym






