Czytam o tym, jak włączać i wyłączać usługi w Ubuntu i wydaje się, że istnieją różne możliwości zarządzania nimi.
Pierwszą metodą, którą znalazłem, jest update-rc.d
dodanie nowych usług do uruchamiania, które mają na celu /etc/init.d
folder i jego zawartość.
Drugim, który znalazłem, jest edycja .conf
plików w /etc/init
folderze.
Jaki jest zalecany sposób włączania / wyłączania / dodawania usług i dlaczego?
Czy możesz podać krótki, kuloodporny przykład krok po kroku, jak dodać usługę w Ubuntu oraz włączyć i wyłączyć tę usługę?
chkconfig
jest tym, czego szukasz.autostart
manifestach lub w*.service
plikach w kilku lokalizacjach, a także winit.d
lubcrontab
. Zobacz: unix.stackexchange.com/a/525845/43233Odpowiedzi:
Istnieją usługi, które można włączyć / wyłączyć za pomocą GUI (np.
startup
Aplikacji) lub terminala.Dla terminalu masz kilka opcji. Najpierw otwórz terminal (wpisz na przykład „terminal” w myślniku i otwórz go). Następnie:
Tymczasowe włączanie / wyłączanie usług
Aby tymczasowo zatrzymać i uruchomić usługi (nie włącza / nie wyłącza ich dla przyszłych rozruchów), możesz wpisać
service SERVICE_NAME
. Na przykład:sudo service apache2 stop
(Will STOP usługę Apache do restartu lub do momentu uruchomienia go ponownie).sudo service apache2 start
(Will START usługę Apache zakładając, że został zatrzymany wcześniej.).service apache2 status
(Powie Ci STATUS usługi, jeśli jest ona włączona / działa wyłączona / NIE działa.).sudo service apache2 restart
( ZRESTARTUJE usługę. Jest to najczęściej używane po zmianie, plik konfiguracyjny. W tym przypadku, jeśli zmieniłeś konfigurację PHP lub konfigurację Apache. Ponowne uruchomienie zaoszczędzi ci konieczności zatrzymywania / uruchamiania z 2 wierszami poleceń )service apache2
(W tym przypadku, ponieważ nie wspominałeś o AKCJI do wykonania dla usługi, pokażą ci wszystkie opcje dostępne dla tej konkretnej usługi.) Ten aspekt różni się w zależności od usługi, na przykład w przypadku MySQL, wspomina tylko, że to brakuje parametru. W przypadku innych usług, takich jak usługa sieciowa, wspomniano by o małej liście wszystkich dostępnych opcji.SYSTEMD
Począwszy od wersji Ubuntu 15.04, Upstart zostanie wycofany na korzyść Systemd. Z Systemd do zarządzania usługami możemy wykonać następujące czynności:
systemctl start SERVICE
- Użyj go, aby uruchomić usługę. Nie utrzymuje się po ponownym uruchomieniusystemctl stop SERVICE
- Użyj go, aby zatrzymać usługę. Nie utrzymuje się po ponownym uruchomieniusystemctl restart SERVICE
- Użyj go, aby ponownie uruchomić usługęsystemctl reload SERVICE
- Jeśli usługa to obsługuje, przeładuje powiązane z nim pliki konfiguracyjne, nie przerywając żadnego procesu korzystającego z usługi.systemctl status SERVICE
- Pokazuje status usługi. Informuje, czy usługa jest obecnie uruchomiona.systemctl enable SERVICE
- Włącza usługę, przy następnym uruchomieniu lub następnym uruchomieniu zdarzenia. Utrzymuje się po ponownym uruchomieniu.systemctl disable SERVICE
- Wyłącza usługę przy następnym uruchomieniu lub następnym zdarzeniu zatrzymania. Utrzymuje się po ponownym uruchomieniu.systemctl is-enabled SERVICE
- Sprawdź, czy usługa jest obecnie skonfigurowana do uruchamiania przy następnym uruchomieniu.systemctl is-active SERVICE
- Sprawdź, czy usługa jest obecnie aktywna.systemctl show SERVICE
- Pokaż wszystkie informacje o usłudze.sudo systemctl mask SERVICE
- Całkowicie wyłącz usługę, łącząc ją z/dev/null
; nie można uruchomić usługi ręcznie lub włączyć usługi.sudo systemctl unmask SERVICE
- Usuwa łącze do/dev/null
i przywraca możliwość włączenia lub ręcznego uruchomienia usługi.UPSTART (przestarzałe od 15.04)
Jeśli chcemy skorzystać z oficjalnej metody Upstart (zauważ, że na razie nie wszystkie usługi zostały przekształcone w Upstart), moglibyśmy użyć następujących poleceń:
status SERVICE
- To powie nam, czy konwertowana usługa jest uruchomiona, czy nie. Zauważ, że to jest zastąpionastart
,stop
,status
irestart
. Poinformuje nas również, jeśli usługa nie została jeszcze przekonwertowana na upstart:Konwertowana usługa zwykle wyświetla bieżący stan (Uruchomienie, Uruchomienie, Zatrzymanie ...) i identyfikator procesu. Nie przekonwertowana usługa spowodowałaby błąd dotyczący nieznanego zadania .
Niektóre skróty mogą działać tylko z
service
powyższym poleceniem, ale nie z poniższymi poleceniami, chyba że zostaną w 100% przekonwertowane na usługi upstart:START -
sudo start mysql
STOP -
sudo stop mysql
RESTART -
sudo restart mysql
STATUS -
sudo status smbd
Włączanie / wyłączanie usługi
Aby przełączyć usługę z trwałego uruchamiania lub zatrzymywania, musisz:
gdzie zwrotka
manual
powstrzyma Upstart przed automatycznym ładowaniem usługi przy następnym uruchomieniu. Każda usługa z.override
zakończeniem ma pierwszeństwo przed oryginalnym plikiem usługi. Będziesz mógł uruchomić usługę dopiero później. Jeśli nie chcesz tego, po prostu usuń.override
. Na przykład:Przełącza usługę MySQL w
manual
tryb. Jeśli tego nie chcesz, możesz po prostu to zrobići Uruchom ponownie, aby usługa uruchomiła się automatycznie. Oczywiście, aby włączyć usługę, najczęstszym sposobem jest jej instalacja. Jeśli zainstalujesz Apache, Nginx, MySQL lub inne, zostaną one automatycznie uruchomione po zakończeniu instalacji i będą uruchamiane przy każdym uruchomieniu komputera. Wyłączenie, jak wspomniano powyżej, spowoduje skorzystanie z usługi
manual
.źródło
.service
do każdego polecenia?systemctl mongod status
działało dobrze.systemd
Zestaw poleceń działa wspaniale na Ubuntu 18.04.Obecnie istnieją trzy różne sposoby uruchamiania oprogramowania jako usługi w Ubuntu, SysV , Upstart i systemd . Usługa jest tutaj definiowana jako program uruchamiany przez system w tle, w przeciwieństwie do programu uruchamianego i uruchamianego bezpośrednio przez użytkownika.
SysV
Tradycyjnym sposobem uruchamiania usług w Linuksie było umieszczenie skryptu
/etc/init.d
, a następnie użycieupdate-rc.d
polecenia (lub w dystrybucjach opartych na RedHatchkconfig
), aby go włączyć lub wyłączyć.To polecenie używa nieco skomplikowanej logiki do tworzenia dowiązań symbolicznych
/etc/rc#.d
, które kontrolują kolejność uruchamiania usług. Jeśli uruchomiszls /etc/rc2.d
, zobaczysz kolejność, w której usługi zostaną zabite z nazwą pliku podobną do nazw plikówK##xxxx
i uruchomioną z nazwami plikówS##xxxx
.##
WS##xxxx
oznacza „porządek startowy” dla służbyxxxx
. I odwrotnie,##
inK##xxxx
oznacza rozkaz zabicia dla usługixxxx
.Jednym z głównych problemów z SysV było to, że podczas uruchamiania systemu wszystko musiało być wykonywane szeregowo, jedna po drugiej, dzięki czemu czasy uruchamiania systemu były naprawdę powolne . Próbowano to zrównoważyć, ale były przypadkowe i trudno było w pełni je wykorzystać. To był główny powód, dla którego stworzono Upstart .
Dorobkiewicz
Upstart używa plików definicji zadań w
/etc/init
celu określenia, jakie zdarzenia powinna uruchomić usługa. Tak więc, podczas uruchamiania systemu, upstart przetwarza różne zdarzenia, a następnie może uruchomić wiele usług równolegle. Pozwala im to w pełni wykorzystać zasoby systemu, na przykład uruchamiając usługę związaną z dyskiem, gdy działa inna usługa związana z procesorem lub gdy sieć czeka na przydzielenie dynamicznego adresu IP.Możesz zobaczyć wszystkie pliki zadań upstart, uruchamiając
ls /etc/init/*.conf
Pozwól mi tylko zatrzymać się tutaj i powiedzieć, że jeśli nie wiesz, co to jest usługa lub co ona robi, NIE wyłączaj jej!
Nie wszystkie usługi zostały przekonwertowane na upstart. Pracując w zespole serwerów w Canonical przez ostatnie kilka miesięcy, pracowałem nad wieloma skonwertowanymi plikami zadań, a najmilszą częścią jest to, że pozwala pozbyć się całej „magii” skryptu i po prostu włożyć kilka poleceń tu i tam, aby dokładnie określić sposób uruchomienia usługi i nic więcej. Ale na razie tylko kilka tradycyjnych usług sieciowych, takich jak kałamarnica i samba , zostało przekonwertowanych.
Czy usługa jest oparta na upartach?
Aby dowiedzieć się, czy usługa jest oparta na wstępie, możesz uruchomić komendę status:
Jeśli jest to praca upstart , pokaże to:
Ale jeśli nie, zobaczysz coś takiego:
W tym przypadku
apache2
nie został przekonwertowany na upstart . Aby wyłączyćapache2
, po prostu biegnijWyłącz usługi (zadania) na początku
Definicje zadań wstępnych nie mają
update-rc.d
polecenia. Aby wyłączyć zadanie, musisz bezpośrednio edytować plik zadania, aby go wyłączyć. Można to zrobić na dwa sposoby.Jeśli nadal chcesz ręcznie go uruchomić, musisz skomentować ten
start on
warunek. Powiedz, że chcesz zainstalować sambę , ale nie uruchamiaj jej automatycznie. Oto plik zadania (w natty):Aby wyłączyć sambę , możesz po prostu umieścić znak
#
„start on local-filesystems
”. Pamiętaj, że chociaż nie można go ponownie uruchomić przy starcie systemu, tym razem musisz go zatrzymaćJeśli jednak nie chcesz nigdy uruchamiać samby , sugeruję usunięcie pakietu. Jeśli jednak chcesz go zainstalować, ale nie można go uruchomić, możesz także:
Wyłącz usługę przy użyciu sekcji start / stop (od 11.04)
Począwszy od wersji nowobogackich, która będzie w 11.04, nie jest nowe słowo kluczowe, który wyłącza
start on
istop on
strofy:manual
. Tak więc innym sposobem wyłączenia usługi od 11.04 jest:Możesz utworzyć
override
plik, aby wyłączyć usługę bez edytowania definicji zadania, po prostu umieszczając w nimmanual
słowo kluczowe.źródło
echo manual >> /etc/init/<service>.override
Jest więc preferowane, ponieważ pozostawia nienaruszony oryginalny plik .conf. W każdym razie szkoda, że takie podstawowe włączanie / wyłączanie zajęło 3 lata i nie ma do tego GUI./etc/init/ssh.conf
istnieje, alestatus ssh
istatus sshd
zarówno mówią „Nieznany praca”. Ta odpowiedź nie wydaje się dotyczyć takiej możliwości?status ssh
daje mi również „service ssh status
sysv-rc-conf
Spróbuj użyć sysv-rc-conf
i aby rozpocząć zarządzanie usługami, wykonaj
Które wywoła interaktywne okno takie jak to
Możesz dalej poruszać się po stronach za pomocą
Ctrl+n
następnej strony iCtrl+p
poprzedniej strony. Możesz włączać i wyłączać usługi, wybierającSPACE
żądane poziomy pracy.Jobs-Admin
Inną alternatywą byłby Jobs-Admin , instalując przez
Który zapewnia również GUI w ten sposób
Aby wyświetlić więcej zadań, musisz zaznaczyć opcję Pokaż chronione prace z menu.
chkconfig
Trzecią opcją byłoby chkconfig ,
Można go używać za pomocą interfejsu CLI
chkconfig
, wyświetlając listę zadań włączania / wyłączania. Możemy również przeglądać usługi systemowe za pomocąchkconfig –list
Usługi można włączyć za pomocą
Usługi można wyłączyć za pomocą
Możemy nawet dodać własną usługę, używając odpowiedniego skryptu inicjującego z odpowiednimi nagłówkami.
update-rc.d
Inna opcja może być wymieniona tutaj update-rc.d , wyjaśniona tutaj krótko .
Zauważ, że w Ubuntu Server 12.04
update-rc.d
jest używany zamiast chkconfig.źródło
Package chkconfig is not available, but is referred to by another package.
Myślę, że dla tych z nas, którzy używają Ubuntu przez ssh, najlepszym rozwiązaniem jest
rcconf
program tekstowy:Nawiguj za pomocą klawiszy tabulatorów i strzałek, naciśnij spację, aby włączyć / wyłączyć. Zmiany są trwałe po ponownym uruchomieniu.
Zrzut ekranu zapożyczony z tego posta na blogu , który również pokazuje
sysv-rc-conf
- podobne narzędzie, które pozwala również ustawić poziom działania. (Dla tych, którym akurat zależy na poziomach pracy, chce je zmienić :)Niestety, rcconf nie działa z upstartem (usługi wymienione w
/etc/init/*
), tylko z tradycyjnym mechanizmem (ls -l /etc/init.d/*
- tymi, które nie są dowiązaniami symbolicznymi).Na szczęście wiele usług istotnych podczas ssh-in na serwerze (Apache, Tomcat, mdadm, boinc-client ...) nie zostało jeszcze przeniesionych na wyższy poziom.
źródło
update-rc.d
została zmieniona, a niektóre jej przestarzałe funkcje zostały usunięte . Błąd Debiana # 727735 zauważa, że rcconf nie został zmieniony w celu dopasowania. I nie, rcconf również nie działa z systememd, dlatego nie można go zastosować do żadnego z domyślnych systemów inicjujących dla Ubuntu Linux przez ostatnią dekadę.Dowiedziałem się, że istnieje to narzędzie GUI, coś w rodzaju BUM, ale kompatybilne z Upstart:
Jobs-Admin
źródło
Edycja istniejącego pliku konfiguracji początkowej (jak opisano powyżej) nie jest dobrym pomysłem. Zaktualizowany pakiet może zawierać zaktualizowaną konfigurację i trzeba będzie powtarzać zmiany w kółko.
Rzucając okiem na
man 5 init
jedno, znajdziesz bardziej odpowiednie rozwiązanie: używając konfiguracji zastępowania. Krótki przykład: powiedzmy, że mamy usługę o nazwie „foobar”, więc będzie plik o nazwie/etc/init/foobar.conf
z konfiguracją upstart. Teraz nie chcesz usuwać tego pliku ani go modyfikować - ale nie chcesz, aby ta usługa była uruchomiona? Więc umieścić nadpisania pliku obok niego:/etc/init/foobar.override
, zawierającą (opcjonalnie nagłówek z opisem) zamiast tegostart on
/stop on
Linie umieścić linię jednym słowem:manual
. W ten sposób powiesz upstartowi, aby po prostu używałfoobar.conf
, ale przesłonisz definicję uruchamiania, aby uruchomić tę usługę tylko wtedy, gdy zostanie ręcznie wymuszone (service foobar start
w naszym przykładzie).źródło
Istnieje również Menedżer rozruchu .
Żeby zainstalować:
sudo apt-get install bum
Więcej informacji: http://www.marzocca.net/linux/bum.html
źródło
Używam Stacera. Pokazuje także usługi i procesy. Kompletny zestaw narzędzi systemu GUI. https://github.com/oguzhaninan/Stacer
źródło