Wyłączyć usługę od uruchamiania na wszystkich poziomach pracy?

61

Mam usługę, fooktóra obecnie zaczyna się na poziomie 3 i wyższym. Jak mogę to zrobić bez użycia update-rc.d foo stop 3 ., co (jeśli dobrze to rozumiem) wyłączyłoby usługę przy każdej zmianie poziomu pracy.

(tj. gdybym był na poziomie 1 i był włączony foo, to kiedy zmieniłem na poziom 3 , byłby wyłączony, nie?)

Uruchamianie systemu Debian GNU / Linux Lenny.

lfaraone
źródło

Odpowiedzi:

57

Termin „stop” nie zapobiega uruchomieniu demona, ale raczej zamyka go podczas wchodzenia na określony poziom działania.

Jeśli chcesz tylko usunąć usługę / demona z jednego poziomu uruchomieniowego, update-rc.djak wskazał bei Freiheit lub po prostu usunąć dowiązania z /etc/rcX.d/, gdzie X oznacza poziom pracy. Jeśli nie chcesz, aby usługa uruchamiała się automatycznie, update-rc.d -f foo removezałatwi sprawę.

PEra
źródło
2
Wszelkie pomysły, jak to zrobić na Debian 8? sudo update-rc.d -f sunrpc removenie działa; jest nadal obecny po ponownym uruchomieniu.
Debian 9 To nie działało dla mnie, a potem zdałem sobie sprawę, och, derp, potrzebuję sudo. update-rc.d nie przekazuje opinii, jeśli zapomnisz sudo. Potwierdziłem, że linki zniknęłyls /etc/rc*.d
Jason Dunkelberger
Polecenie nie powiodło się w systemie Ubuntu16.04
Stephane
Upewnij się, że podałeś poprawną nazwę usługi, update-rc.d nie udziela żadnych informacji zwrotnych, jeśli nie istnieje.
marcovtwout
Co jeśli chcesz ponownie włączyć później? Poniżej @ odpowiedź „Nie teraz” jest lepsza, ponieważ możesz ją wyłączyć i ponownie włączyć po. update-rc.d apache2 disable
Wadih M.
54

Skonfiguruj aplikacje startowe systemu Linux za pomocą sysv-rc-conf :

apt-get install sysv-rc-conf

Jak zauważyli inni, tutaj jest także update-rc.d dla linii cmd.

Na przykład uruchom

update-rc.d apache2 disable

aby wyłączyć apache2 ze wszystkich poziomów uruchamiania.

Nie teraz
źródło
świetne narzędzie - nie wiedziałem o tym. Dzięki!
PEra
1
zauważ, że to nie zatrzyma uruchomionej usługi, aby to zrobić, musisz to dodać: service foo stoplub zrestartować serwer
rubo77
15

Krótki:

Nie ma niezawodnego sposobu, aby to zrobić szybko.

Długo:

Obecny Debian (Debian niestabilny na dzień 01.06.2012) nie ma obecnie niezawodnego krótkiego sposobu na konsekwentne wyłączanie usługi / demona. - Ponieważ aktualizacja pakietu demona bezwarunkowo uruchamia „/etc/init.d/package restart”, wyłączając go dla tego poziomu pracy lub nie.

Aby upewnić się, że demon nie uruchomi się, możesz:

  • odinstaluj to
  • wykonaj lokalne przekierowanie skryptu /etc/init.d/xyz (w ten sposób żadne narzędzia go nie znajdą)
  • użyj / nadużyć pliku konfiguracyjnego odpowiedniego pakietu, aby wywołać wcześniejsze wyjście z tego skryptu (np. umieść „wyjście” na początku w / etc / default / xyz w przypadku, gdy pochodzi on ze skryptu init)
  • poszukaj w tym skrypcie inicjującym wstępnie zdefiniowanych „oficjalnych” sposobów, aby nie uruchamiać tego demona

W skrypcie Debian jest / był (?) Jakiś krok inicjalizujący-polityka-coś, co miało wypełnić tę brakującą funkcjonalność. - Próbowałem go użyć, uznałem to za skomplikowane, znalazłem błąd i nigdy więcej go nie dotknąłem.

Aktualizacja:

Przełącz na „systemd”, alternatywę dla „initd”. Pakiet debian istnieje i możesz wyłączyć usługę za pomocą czegoś takiego:

cd /etc/systemd/system
ln -s /dev/null xyz.service
Robert Siemer
źródło
1
+1 To jest taka pomocna odpowiedź - i gdybym się na tym nie zdarzyła, zostałabym użądlona później - dzięki!
Czy potrafisz równie unlink xyz.servicedobrze?
jaggedsoft,
@NextLocal, zapomniałem, dlaczego to napisałem, ale wierzę, że jeśli usługa ma skrypty inicjujące System V, systemdbędą ich używać. - Więc link mówi, żeby ich nie szukać.
Robert Siemer
Zauważ, że edycja /etc/default/xyzpliku w celu dodania exitnie spowoduje, że program pakujący nie zastąpi pliku poprawną wersją przy następnym uaktualnieniu. (Pakiet zapisuje pliki konfiguracyjne, a w większości przypadków skrypty inicjujące nie są postrzegane jako takie.) W większości przypadków to nie pomogłoby.
Alexis Wilke
Devuan przybywa na ratunek: zamiast systemd obejmuje klasyczny system SysV rc.d / init.d (lub openrc, jeśli ktoś się na to zdecyduje).
Csaba Toth
5

Uruchom to polecenie

apt-get install rcconf

Po zainstalowaniu uruchom rcconf w SSH, a pojawi się okno dialogowe wyświetlające wszystkie usługi ustawione do uruchomienia podczas rozruchu. Wybierz te, naciskając spację, aby wyłączyć / włączyć konkretny i gotowe - po prostu kliknij OK, a ta usługa nie będzie kłopotać się ponownym uruchomieniem przy następnym uruchomieniu. Korzystam z tego przez lata. Bardzo przydatne narzędzie dla użytkowników Debiana / Ubuntu takich jak ja.

Mark Levinsky
źródło
Proste jak 1,2,3! Dzięki za to małe narzędzie wiersza poleceń.
DanielaWaranie
2

Jestem zdezorientowany, co próbujesz osiągnąć.

Na jakich poziomach uruchamiania chcesz uruchomić Foo?

Jeśli zawsze chcesz, aby działał, użyj update-rc.d foo defaults; który zatrzyma go w 0, 1 i 6, pozostawiając działający w 2, 3, 4 i 5. (1 nie powinien uruchamiać niczego poza powłoką, 0 i 6 zatrzymują się i restartują)

Jeśli chcesz dokładnie określić, w jakich poziomach uruchamiania chcesz uruchomić:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .
freiheit
źródło
2

Myślę, że to by zadziałało: insserv -r foo

użytkownik38551
źródło
1

Zacznij korzystać z insserv z Debian7

Wyjście wszystkich usług i informacje o poziomie pracy

insserv --showall

Usuń wymienione skrypty ze wszystkich poziomów uruchamiania

insserv --remove [specify_script]
kakao
źródło
0

Ubuntu's Bootup Manager jest rodzajem sysv-rc-conf light , bardziej przyjazną wersją GUI, i wielu ludzi czytających ten wątek to doceni.

http://www.marzocca.net/linux/bum.html


źródło
0

W systemie opartym na czerwonym kapeluszu możesz użyć

chkconfig httpd off
chkconfig httpd --del

aby usunąć serwer z poziomów pracy

w systemie opartym na Debianie wszystkie usługi powinny być uruchamiane przez pliki znajdujące się w katalogach /etc/rc?.d/. Pliki te mają następnie symboliczne łącze do odpowiednich plików w katalogu /etc/init.d/. Jeśli chcesz, aby usługa nie uruchamiała się domyślnie, możesz zmienić jej nazwę / usunąć ją z katalogu /etc/rc?.d, a twoja zmiana zostanie zachowana podczas aktualizacji pakietu, o ile jedno z łączy startowych będzie nadal widoczne w jednym z inne (3,4 i 5) katalogi. Lub możesz użyć polecenia update-rc.d, aby zmienić łącze (łącza), a jeśli chcesz uruchomić usługę później, możesz użyć /etc/init.d/service_name start, jeśli opuścisz start od końca, to będzie daje opcje, które mogą być używane, takie jak zatrzymaj, uruchom ponownie, przeładuj ...

Myślę, że możesz użyć sysv-rc-conf, aby go wyłączyć.

Gryzonie 43
źródło
Pytanie jest oznaczone jako Debian, a nie Fedora lub Red Hat.
0
sudo update-rc.d SERVICE disable

Jeśli chcesz określić poziomy uruchamiania.

sudo update-rc.d SERVICE disable|enable [S|2|3|4|5]

Pamiętaj, aby zmienić usługę na nazwę programu.

sudo service SERVICE restart
Eddie
źródło
0

Dlaczego nie utworzysz kopii zapasowej skryptu startowego w innym miejscu i nie usuniesz go z /etc/init.d/? Jeśli update-rc.d nie działa.

Kosaka Honoka
źródło