Jak uruchamiać, zatrzymywać i restartować usługi w Linuksie

Jak zatrzymywać i uruchamiać usługi w Linuksie

Jako administrator systemów masz za zadanie obsługiwać całkiem sporo. A ta lista wydłuża się i komplikuje z każdym dniem. Co gorsza, wszystko się zmienia. Pamiętam, że kiedyś, aby uruchomić lub zatrzymać usługę w Linuksie, musiałem otworzyć okno terminala, wejść do /etc/rc.d/ (lub /etc/init.d, w zależności od dystrybucji, której używałem), zlokalizować usługę i wydać polecenie /etc/rc.d/SERVICE start|stop|restart (gdzie SERVICE to nazwa usługi, która ma być uruchomiona, zatrzymana lub zrestartowana). Kiedy pracowałem pomiędzy dystrybucjami RedHat i Debian, miało to tendencję do mylenia się; próbowałem wydać polecenie /etc/rc.d/service start w jednej dystrybucji, tylko po to, aby dowiedzieć się, że powinno to być /etc/init.d/service start.

To się zmieniło. Sposób w jaki usługa jest zatrzymywana, uruchamiana i restartowana ma teraz sens. Nawet lepiej, stało się to (w większości) uniwersalne.

Pewnie.

Jak uruchomić, zatrzymać, zrestartować usługę będzie zależało od tego, czy twoja dystrybucja używa systemd czy init. Nawet wtedy, możesz być w stanie kontrolować te usługi za pomocą wielu środków. Pozwól mi to wyjaśnić.

systemctl vs. service

To jest sedno sprawy. Istnieją dwie oficjalnie przyjęte metody kontrolowania usług:

  • systemctl
  • service

To, której z nich użyjesz, zależy od tego, czy twoja dystrybucja korzysta z systemd czy init. Większość nowoczesnych dystrybucji przesiadła się na systemd, więc systemctl jest menedżerem usług z wyboru. Jednakże, stare nawyki umierają ciężko, więc wielu administratorów wciąż trzyma się starzejącej się komendy service. Na szczęście twórcy systemd zadbali o to, aby zachować service i przekierować je do systemctl. Aby jeszcze bardziej skomplikować sprawy, możesz znaleźć przypadkową usługę, którą zainstalowałeś, a która nie została zaktualizowana do narzędzi service lub systemctl i musisz ją ręcznie uruchomić z poziomu /etc/rc.d (lub /etc/init.d).

Więc nadal może to być trochę mylące.

Ale szukamy tutaj najlepszych praktyk; a dla uruchamiania|stopowania|restartowania aplikacji w Linuksie, najlepsze praktyki zaczynają się i kończą na systemctl.

użycie systemctl

Komplikacja kończy się tutaj. W rzeczywistości, zatrzymywanie/uruchamianie/restartowanie usług na Linuksie jest teraz całkiem proste. Załóżmy, że mamy CentOS-a i chcemy zatrzymać serwer Apache. Aby to zrobić, otworzymy okno terminala i wydamy polecenie:

 sudo systemctl stop httpd 

Serwer Apache zostanie zatrzymany, a my wrócimy do wiersza poleceń basha. Aby uruchomić tę samą usługę, wydamy komendę:

 sudo systemctl start httpd 

Usługa zostanie uruchomiona, a my wrócimy do znaku zachęty bash.

Aby ponownie uruchomić tę samą usługę, wydamy komendę:

 sudo systemctl restart httpd 

Usługa zostanie ponownie uruchomiona, a my wrócimy do znaku zachęty bash.

Powyższe polecenia można uruchomić na CentOS-ie, Ubuntu, RedHacie, Fedorze, Debianie i wielu innych.

użycie service

Aby było ciekawie, polecenie service wciąż działa — nawet w dystrybucjach, które przeszły na systemd i systemctl. Oznacza to, że ci, którzy instynktownie wpisują service, kiedy muszą zrestartować usługę w Linuksie, nie otrzymają błędu „Nieznane polecenie”. W przypadku usługi, polecenie przekieruje do systemctl. W rzeczywistości, kiedy uruchomisz polecenie service na dystrybucji z obsługą systemctl, wyraźnie zobaczysz informację o przekierowaniu (Rysunek A).

Rysunek A

Rysunek A

Komenda service przekierowująca do systemctl.

Użycie polecenia service jest trochę inne niż systemctl. Nazwa usługi i opcje start|stop|restart są zamienione:

 sudo service httpd startsudo service httpd stopsudo service httpd restart 

W każdym przypadku zobaczysz, że usługa zostanie przekierowana do systemctl, ale usługa, którą próbujesz uruchomić|stop|restartować powiedzie się.

Nie jest to takie skomplikowane

Skomplikowałem sprawę wymieniając stare metody uruchamiania, zatrzymywania i restartowania usług w Linuksie. Prawdę mówiąc, proces kontrolowania usług w Linuksie nie jest tak skomplikowany; musisz tylko zrozumieć właściwą komendę, której należy użyć.

Aby dowiedzieć się więcej o tym, co systemctl może dla ciebie zrobić, upewnij się, że wydasz komendę man systemctl i przeczytasz stronę man.

Sprawdź też

  • Jak monitorować serwery linuksowe za pomocą nmon (TechRepublic)
  • Jak zainstalować Stacer do szybkiej optymalizacji systemu linuksowego (TechRepublic)
  • Jak używać wget do pobierania plików na serwer linuksowy bez GUI (TechRepublic)
  • Jak zapobiec nadpisywaniu przez Ubuntu pliku /etc/resolv.conf (TechRepublic)
  • Nowy i ulepszony serwer plików Samba wydany (ZDNET)
sysctlhero.jpg
Image: Jack Wallen

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *