Do niedawna istniał prosty i skuteczny sposób na uruchomienie / zatrzymanie / ponowne uruchomienie usług:
service nginx start|stop|restart
Działało to doskonale przez tak wiele lat ... dopóki niektóre inteligentne spodnie nie zdecydowały się je ulepszyć, a teraz mam do czynienia z systemami Debian / Ubuntu, w których service
skrypt nic nie robi (ponieważ mam używać takich rzeczy systemctl start nginx.service
(znacznie dłużej, brak automatycznego uzupełniania działa ...)
Moje pytanie dotyczy szczególnie Debiana i Ubuntu, ale pomocne byłoby również objęcie dystrybucji CentOS / RedHat.
Czy jest coś, co może mnie ocalić od tych skazanych na porażkę zmian?
W przypadku, gdy nie było to jasne, szukam spójnego sposobu radzenia sobie z tymi, który działałby na Debianie 7.x, 8.x, najnowszym Ubuntu LTS i innym niż LTS.
PS. Poza zakresem tego konkretnego pytania, ale dodatkowe wyróżnienia są przyznawane, jeśli rozwiązanie obejmowałoby również włączanie i wyłączanie części dla usług.
service
polecenia opakowaniem, które zamiast tego wywołuje servicectl?service
naprawdę nic dla ciebie zrobić? Działa zgodnie z oczekiwaniami na moim LMDE (który jest w zasadzie testowaniem Debiana), nie sądziłem, że była to sprawa specyficzna dla LMDE. Działa również zgodnie z oczekiwaniami w mojej maszynie Wirtualnej Ubuntu.Odpowiedzi:
W jego splątanej historii istniało wiele różnych systemów kontroli rozruchu i usług na platformach Unix.
System
service\chkconfig
oparty na prostym i skutecznym systemie jest ogólnie nazywany stylem SysVinit i był ważnym krokiem na drodze do pewnego rodzaju standaryzacji. Ten styl rozruchu znajdziesz na RHEL / CentOS (EL) w wersji 6, Fedora w wersji 14 oraz w dystrybucji opartej na Debian / Ubuntu do 2015 roku. Nie był to jednak jedyny dostępny system rozruchowy, (prostszy) styl BSD System init wciąż ma wielu fanów.SysVinit nie był idealnym rozwiązaniem (co to jest?), A Systemd został opracowany w celu przezwyciężenia wielu problemów; to jest
systemctl
system oparty na poleceniach, którego obecnie doświadczasz. Chociaż nie jest to powszechnie lubiane (ludzie nienawidzą zmian, wzdęć itp.), Nie ma wątpliwości, że szybko staje się standardem defacto w większości dystrybucji.Dlatego patrząc niezwłocznie przekazuje odpowiedzi na swoje oryginalne pytanie jest prosta: standardowy sposób do służb kontrolnych całej większości dystrybucji Linuksa jest teraz ! Nikt nie zgadnie, jak długo to się utrzyma; prawdopodobnie tylko do momentu, gdy pojawi się coś, co będzie lepsze i stanie się powszechnie przyjęte.
systemctl
Jestem pewien, że będą dostępne opakowania, które pozwolą, twojemu ulubionemu, na
service/chkconfig
polecenia, aby kontynuować robienie głównie zdrowych rzeczy, ale z tą szczególną krzywą uczenia się prawdopodobnie najlepiej nie walczyć z tym. Może z niecierpliwością oczekuję, że przez pewien czas pojawią się równieżsystemctl
opakowania dla starszych systemów, aby zarządzanie nimi wraz z bardziej aktualnymi było mniej uciążliwe;)źródło
… Co, jak powiedzieli inni w komentarzach, zostało już dawno zrobione .
/usr/sbin/service
Komenda na Debianie 8 jest częścią pakietu sysvinit-utils. Jest obecny od 2009 roku. Jest to specyficzny dla Debiana dodatek pochodzący od RedHata do oryginalnego pakietu źródłowego sysvinit, i jak widać po przeczytaniu skryptu, rozpoznaje on zarówno uruchamianie systemu, jak i obecność poprawnych zadań, wyodrębnianie poleceń dosystemctl
iinitctl
( odpowiednio poprzez aliasy). Robi to od 2013 r.service name action
jest dość szeroko dostępny nawet w systemach operacyjnych innych niż Linux. Działa nawet na większości BSD, ponieważ one także mają własneservice
polecenia. Wservice
pakiecie nosh znajduje się także polecenie shim, które tłumaczy . Ale …system-control action name
service
polecenia.service
Komendy BSD mają znane od dawna problemy, o których administratorzy systemów opowiadali historie wojenne od dziesięcioleci.Włączanie i wyłączanie usług jest podobną sytuacją. Chociaż
chkconfig
program SuSE (dostępny w pakiecie dla Debiana i Ubuntu) bardzo różni się od programu Fedora (są one napisane w zupełnie innych językach programowania, nawet - jeden skompilowany, jeden zinterpretowany), istnieje wspólna minimalna składnia, z działaniem będącym lub . Ale …chkconfig name action
on
off
chkconfig
na BSD, ponieważ konwencjonalnymi narzędziami do tego są albosysrc
najnowszy OpenBSDrcctl enable
ircctl disable
. Sąchkconfig
ircctl
podkładki w pakiecie nosh, które tłumaczą na i .system-control enable name
system-control disable name
chkconfig
wie o systemd i działa jako podkładka dlasystemctl enable
isystemctl disable
. SuSEchkconfig
nie ma wiedzy o systemie.Dalsza lektura
script/service
. init-system-helpers. Archiwum źródłowe Debiana.telinit
. Przewodnik nosh . 1.20 Oprogramowanie JdeBP.service
poleceniem . strony nosh. Oprogramowanie JdeBP.service
. §8 Strony podręcznika FreeBSD.źródło
Nie ma standardowego sposobu uruchamiania i zatrzymywania usług w systemie Linux.
Wypróbuj narzędzie do zarządzania konfiguracją / aranżacji: Ansible , Chef , Saltstack , Puppet lub cokolwiek innego.
Możesz uruchomić i włączyć usługę za pomocą Ansible:
Spójrz na klasę LinuxService w
service
module Ansible :źródło
Problem polega na tym, że Debian / Ubuntu przeszedł na nowy
systemd
jako zamiennik staregosysvinit
. Zapytaj, który z nich jest lepszy, a zaczniesz wojnę z ogniem, ale zawsze możesz wrócić do staregosysvinit
, zaznacz to, jeśli chcesz wrócić.źródło