service

Starsze polecenie do uruchamiania/zatrzymywania usług init.d (na nowszych systemach owijka na systemctl).

service to klasyczne narzędzie do zarządzania usługami systemowymi w Linuksie. Wywołuje skrypty startowe z katalogu /etc/init.d, dzięki czemu możesz uruchomić, zatrzymać czy zrestartować demona (np. serwer WWW albo bazę danych) jednym krótkim poleceniem, nie szukając ścieżki do skryptu. Pochodzi z czasów SysVinit i Upstart, ale na nowoczesnych dystrybucjach (z systemd) zostało jako wygodna owijka, która po cichu przekierowuje twoje polecenia do systemctl. Krótko mówiąc: stary nawyk, który nadal działa.

Składnia i najważniejsze opcje

Podstawowa forma to: service NAZWA_USŁUGI POLECENIE, np. sudo service nginx restart. Najczęściej używasz tych poleceń i opcji:

  • start — uruchamia usługę.
  • stop — zatrzymuje usługę.
  • restart — zatrzymuje i od razu uruchamia ponownie (twardy restart).
  • reload — przeładowuje konfigurację bez zrywania działającej usługi (jeśli skrypt to obsługuje).
  • status — pokazuje, czy usługa działa.
  • --status-all — wypisuje listę wszystkich znanych usług init.d wraz ze stanem.
  • force-reload — przeładowuje konfigurację, a gdy usługa tego nie wspiera, robi pełny restart.

Przykłady użycia

  • sudo service apache2 start — uruchamia serwer Apache.
  • sudo service mysql restart — restartuje bazę MySQL, np. po zmianie konfiguracji.
  • service ssh status — sprawdza, czy demon SSH działa (status zwykle obejrzysz bez sudo).
  • sudo service nginx reload — przeładowuje konfigurację Nginxa bez rozłączania bieżących połączeń.
  • service --status-all | less — przegląda stan wszystkich usług, stronicując wynik.

Częste błędy i pułapki

Najczęstsza wpadka to brak sudostart, stop i restart wymagają uprawnień roota, więc dostaniesz błąd o odmowie dostępu. Druga rzecz: nazwa usługi musi odpowiadać nazwie skryptu w /etc/init.d, a ta bywa różna między dystrybucjami (apache2 na Debianie i Ubuntu, ale httpd na RHEL, Fedorze czy CentOS-ie). Pamiętaj też o kolejności argumentów: to service nginx restart, nie service restart nginx — odwrotnie nie zadziała.

Na systemach z systemd service tylko opakowuje systemctl, więc usługi włączone wyłącznie jako jednostki systemd (bez skryptu init.d) mogą się nie pokazać w --status-all. Jeśli coś działa dziwnie albo potrzebujesz włączyć usługę przy starcie systemu (enable), sięgnij wprost po systemctlservice tego nie potrafi.

Polecenia powiązane: systemctl, chkconfig, update-rc.d, journalctl, ps.