Vraag Schakel een service uit om bij alle runlevels te starten?


Ik heb een dienst foo welke momenteel begint op runlevel 3 en hoger. Hoe kan ik het stoppen, zonder te gebruiken update-rc.d foo stop 3 ., die (als ik het goed begrijp) de service bij elke runlevel-wijziging zou uitschakelen.

(dat wil zeggen, als ik op runlevel was 1 en ingeschakeld foo, toen ik veranderde naar runlevel 3 het zou uitgeschakeld zijn, niet?)

Debian GNU / Linux Lenny wordt uitgevoerd.


54
2018-06-26 20:21


oorsprong




antwoorden:


De "stop" -term verhindert niet dat de daemon start, maar sluit deze eerder af tijdens het invoeren van het opgegeven runlevel.

Als u alleen een service / daemon van een enkel runlevel wilt verwijderen, update-rc.d zoals opgemerkt bei freiheit of verwijder gewoon de symlink van /etc/rcX.d/, waar X je runlevel is. Als u niet wilt dat de service automatisch start, update-rc.d -f foo remove zal het lukken.


52
2017-07-09 12:56



Enige ideeën hoe het te doen op Debian 8? sudo update-rc.d -f sunrpc remove werkt niet; het is nog steeds aanwezig na een herstart. - jww
Debian 9 Dit werkte niet voor mij, en toen besefte ik, oh derp, sudo nodig. update-rc.d geeft geen feedback als je vergeet te sudo. Ik bevestigde dat de links verdwenen waren ls /etc/rc*.d - Jason Dunkelberger
De opdracht is mislukt op Ubuntu 16.04 - Stephane


Configureer Linux Startup Applications met sysv-rc-conf:

apt-get install sysv-rc-conf

Zoals anderen hebben opgemerkt, is dit ook zo -update-rc.d voor de cmd-regel.

Voer bijvoorbeeld uit

update-rc.d apache2 disable

om apache2 uit te schakelen van alle runniveaus.


51
2018-06-26 23:28



geweldige tool - wist het niet. Bedankt! - PEra
merk op dat dit de actieve service niet zal stoppen, om te bereiken dat je dit toevoegt: service foo stop of start de server opnieuw op - rubo77


kort:

Er is geen betrouwbare manier om dit snel te doen.

Lang:

Huidige Debian (Debian onstabiel sinds 2012-06-01) heeft momenteel geen betrouwbare korte manier om een ​​service / daemon consequent uit te schakelen. - Omdat een upgrade van een daemon-pakket onvoorwaardelijk "/etc/init.d/package restart" uitvoert, ongeacht of dit runlevel is uitgeschakeld of niet.

Om te zorgen dat een daemon niet start, kun je:

  • verwijder het
  • maak een lokale omleiding van het /etc/init.d/xyz script (op deze manier kan geen gereedschap het vinden)
  • gebruik / misbruik een configuratiebestand van het corresponderende pakket om een ​​vroege exit van dat script uit te lokken (bijvoorbeeld een "exit" vroeg in / etc / default / xyz zetten in het geval het afkomstig is van het init-script)
  • kijk in dat init-script naar vooraf gedefinieerde "officiële" manieren om die daemon niet te starten

Er is / was (?) Wat init-beleid - iets stap voor init-scripts in Debian, dat deze ontbrekende functionaliteit moest vullen. - Ik heb geprobeerd het te gebruiken, vond het ingewikkeld, vond een fout en raakte het nooit meer aan.

Bijwerken:

Schakel over naar "systemd", een alternatief voor "initd". Er bestaat een debian-pakket en u kunt een service uitschakelen met zoiets als dit:

cd /etc/systemd/system
ln -s /dev/null xyz.service

13
2018-06-03 19:39



+1 Dit is zo'n nuttig antwoord - en als ik er niet was gebeurd, zou ik later zijn gestoken - bedankt! - Jack Douglas
Kan je gewoon unlink xyz.service ook? - jaggedsoft
@NextLocal, ik ben vergeten waarom ik dat heb geschreven, maar ik geloof dat als een service System V init-scripts heeft, systemd zal ze gebruiken. - Dus de link vertelt het om ze niet te zoeken. - Robert Siemer
Merk op dat het bewerken van de /etc/default/xyz bestand om een ​​toe te voegen exit zal niet voorkomen dat de packager bij de volgende upgrade het bestand met de juiste versie overschrijft. (Het pakket slaat configuratiebestanden op, en init scripts worden in de meeste gevallen niet als zodanig bekeken.) Dus dat zou in de meeste gevallen niet helpen. - Alexis Wilke
Devuan komt voor de redding: in plaats van systemd omarmt het het klassieke SysV rc.d / init.d-systeem (of openrc ook als iemand daarvoor kiest). - Csaba Toth


Voer deze opdracht uit

apt-get install rcconf

Na de installatie voert u rcconf uit in SSH en ontvangt u een dialoogvenster met alle services die zijn ingesteld om bij het opstarten te worden uitgevoerd. Selecteer degenen door op de spatiebalk te drukken om de betreffende uit te schakelen / in te schakelen en klaar is Kees, klik gewoon op Ok en die service zal niet de moeite nemen om opnieuw te beginnen bij de volgende keer opstarten. Dit al jarenlang gebruiken. Zeer handige tool voor Debian / Ubuntu-gebruikers zoals ik.


4
2017-08-28 10:07



Makkelijk als 1,2,3! Bedankt voor dit kleine opdrachtregelprogramma. - DanielaWaranie


Ik ben in de war wat je probeert te bereiken.

Welke renniveaus wil je dat foo in actie komt?

Gebruik als u altijd wilt dat het actief is update-rc.d foo defaults; dat stopt het in 0, 1 en 6, terwijl het in 2, 3, 4 en 5 blijft lopen (1 zou niets anders moeten doen dan een shell, 0 en 6 zijn gestopt en opnieuw opstarten)

Als u exact wilt opgeven welke runniveaus u wilt uitvoeren:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .

2
2018-06-26 22:56





Ik denk dat dit het werk zou doen: insserv -r foo


2
2017-11-15 01:36





Begin met insserv vanuit Debian7

Voer alle services uit en voer de runlevel-informatie uit

insserv --showall

Verwijder de vermelde scripts van alle runlevels

insserv --remove [specify_script]

1
2018-03-14 17:45





Ubuntu's Bootup Manager is een soort van sysv-rc-conf licht, een vriendelijkere GUI-versie, en veel mensen die deze thread lezen, zullen dat waarderen.

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


0
2017-11-06 08:05





sudo update-rc.d SERVICE disable

Als u runniveaus wilt opgeven.

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

Vergeet niet om te veranderen service naar de naam van het programma.

sudo service SERVICE restart

0
2017-07-01 09:46





Waarom maak je geen backup van het opstartscript ergens anders en verwijder je het in de /etc/init.d/? Als de update-rc.d niet werkt.


0
2017-07-01 15:57





Op een op red hat gebaseerd systeem dat je zou kunnen gebruiken

chkconfig httpd off
chkconfig httpd --del

om de server te verwijderen van runlevels

op debian-gebaseerd systeem worden alle services geacht te zijn gestart door de bestanden in de /etc/rc?.d/ directory's deze bestanden hebben dan een symbolische link naar de corresponderende bestanden in de map /etc/init.d/. Als je wilt dat een service standaard niet start, kun je deze hernoemen / verwijderen uit de map /etc/rc?.d en je wijziging wordt behouden bij pakketupgrade zolang een van de startlinks nog steeds voorkomt in een van de de andere (3,4 en 5) mappen. Of u kunt de opdracht update-rc.d gebruiken om de link (s) te wijzigen en als u de service na die tijd wilt starten, kunt u /etc/init.d/service_name start gebruiken als u het begin van het einde laat eindigen. geeft je de opties die kunnen worden gebruikt zoals stoppen, herstarten, herladen ...

Ik denk dat je sysv-rc-conf kunt gebruiken om het uit te schakelen.


-1
2018-06-26 20:30



De vraag is gelabeld als Debian, niet als Fedora of Red Hat. - jww