Frage Deaktivieren Sie einen Dienst, der auf allen Runlevels gestartet wird?


Ich habe einen Service foo welches momentan bei runlevel beginnt 3 und darüber. Wie kann ich damit aufhören, ohne zu benutzen? update-rc.d foo stop 3 ., die (wenn ich es richtig verstehe) den Dienst bei jeder Änderung des Runlevel ausschalten würde.

(Dh, wenn ich im Runlevel war 1 und aktiviert foo, als ich zum Runlevel wechselte 3 es wäre deaktiviert, nicht?)

Laufendes Debian GNU / Linux Lenny.


54
2018-06-26 20:21


Ursprung




Antworten:


Der Begriff "stop" verhindert nicht, dass der Daemon gestartet wird, sondern schaltet ihn beim Eingeben des angegebenen Runlevels herunter.

Wenn Sie nur einen Service / Daemon von einem einzelnen Runlevel entfernen möchten, update-rc.d wie es bei Freiheit oder Einfach den Symlink entfernen von /etc/rcX.d/, wobei X dein Runlevel ist. Wenn Sie nicht möchten, dass der Dienst automatisch gestartet wird, update-rc.d -f foo remove wird den Trick machen.


52
2017-07-09 12:56



Irgendwelche Ideen, wie man es unter Debian 8 macht? sudo update-rc.d -f sunrpc remove funktioniert nicht; Es ist immer noch nach einem Neustart vorhanden. - jww
Debian 9 Das funktionierte nicht für mich, und dann wurde mir klar, oh derp, ich brauche Sudo. update-rc.d gibt keine Rückmeldung, wenn Sie Sudo vergessen haben. Ich habe bestätigt, dass die Links weg sind ls /etc/rc*.d - Jason Dunkelberger
Der Befehl ist unter Ubuntu fehlgeschlagen 16.04 - Stephane


Konfigurieren Sie Linux Startup-Anwendungen mit sysv-rc-conf:

apt-get install sysv-rc-conf

Wie andere darauf hingewiesen haben, hier auch update-rc.d für die cmd-Linie.

Zum Beispiel, run

update-rc.d apache2 disable

Apache2 von allen Ausführungsebenen deaktivieren.


51
2018-06-26 23:28



Tolles Werkzeug - wusste nicht darüber. Vielen Dank! - PEra
Beachten Sie, dass dies den laufenden Dienst nicht stoppt, damit Sie das hinzufügen müssen: service foo stop oder starten Sie den Server neu - rubo77


Kurz:

Es gibt keinen zuverlässigen Weg, dies schnell zu tun.

Lange:

Aktuelles Debian (Debian unstable vom 01.06.2012) hat derzeit keinen zuverlässigen, kurzen Weg, um einen Dienst / Daemon konsistent zu deaktivieren. - Da ein Upgrade eines Daemon-Pakets bedingungslos "/etc/init.d/package restart" ausführt, muss es für diesen Runlevel deaktiviert sein oder nicht.

Um sicherzustellen, dass ein Daemon nicht startet, könnten Sie:

  • deinstallieren Sie es
  • Machen Sie eine lokale Umleitung des Skripts /etc/init.d/xyz (auf diese Weise werden keine Werkzeuge es finden)
  • Verwenden / missbrauchen Sie eine Konfigurationsdatei des entsprechenden Pakets, um einen vorzeitigen Abbruch dieses Skripts zu provozieren (z. B. setzen Sie ein "Exit" früh in / etc / default / xyz, falls es aus dem init-Skript stammt)
  • In diesem Init-Skript nach vordefinierten "offiziellen" Möglichkeiten suchen, diesen Daemon nicht zu starten

Es gibt / war (?) Ein init-policy-something-Schritt für init-Skripte in Debian, der diese fehlende Funktionalität füllen sollte. - Ich habe versucht, es zu benutzen, fand es kompliziert, fand einen Fehler und berührte es nie wieder.

Aktualisieren:

Wechseln Sie zu "systemd", eine Alternative zu "initd". Ein Debian-Paket existiert und Sie können einen Dienst mit etwas wie diesem deaktivieren:

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

13
2018-06-03 19:39



+1 Das ist so eine hilfreiche Antwort - und wäre ich nicht darauf gekommen, wäre ich später gestochen worden - danke! - Jack Douglas
Kannst du nur unlink xyz.service auch? - jaggedsoft
@ NextLocal, ich habe vergessen, warum ich das geschrieben habe, aber ich glaube, wenn ein Service System-Init-Skripte hat, systemd werde sie benutzen. - Also sagt der Link, dass er nicht nach ihnen suchen soll. - Robert Siemer
Beachten Sie, dass das Bearbeiten der /etc/default/xyz Datei zum Hinzufügen eines exit verhindert nicht, dass der Packer beim nächsten Upgrade die Datei mit der korrekten Version überschreibt. (Das Paket speichert Konfigurationsdateien, und in den meisten Fällen werden Init-Skripte nicht als solche angezeigt.) In den meisten Fällen würde das also nicht helfen. - Alexis Wilke
Devuan kommt zur Rettung: statt systemd umfasst es das klassische System SysV rc.d / init.d (oder auch openrc, wenn sich jemand dafür entscheidet). - Csaba Toth


Führen Sie diesen Befehl aus

apt-get installieren rcconf

Führen Sie nach der Installation rcconf in SSH aus, und Sie erhalten ein Dialogfeld, in dem alle Dienste angezeigt werden, die beim Booten ausgeführt werden. Wählen Sie die gewünschten aus, indem Sie die Leertaste drücken, um das jeweilige Element zu aktivieren oder zu deaktivieren. Klicken Sie einfach auf Ok und der Dienst wird sich beim nächsten Start nicht mehr darum kümmern. Das seit Jahren benutzen. Sehr praktisches Tool für Debian / Ubuntu-Benutzer wie mich.


4
2017-08-28 10:07



Einfach wie 1,2,3! Danke für dieses kleine Kommandozeilenwerkzeug. - DanielaWaranie


Ich bin verwirrt, was du erreichen willst.

Auf welchen Lauflevels möchtest du laufen?

Wenn Sie es immer laufen lassen möchten, verwenden Sie update-rc.d foo defaults; das wird es in 0, 1 und 6 stoppen, während es in 2, 3, 4 und 5 läuft. (1 sollte nichts außer einer Shell laufen, 0 und 6 sind halt und reboot)

Wenn Sie genau angeben möchten, welche Ausführungsebenen ausgeführt werden sollen:

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

2
2018-06-26 22:56





Ich denke, das würde den Job machen: insserv -r foo


2
2017-11-15 01:36





Starten Sie die Verwendung von "insserv" von Debian7

Geben Sie alle Dienste und die Runlevel-Informationen aus

insserv --showall

Entfernen Sie die aufgelisteten Skripte von allen Runlevels

insserv --remove [specify_script]

1
2018-03-14 17:45





Ubuntus Bootup Manager ist eine Art sysv-rc-conf Licht, eine freundlichere GUI-Version, und viele Leute, die diesen Thread lesen, werden das zu schätzen wissen.

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


0
2017-11-06 08:05





sudo update-rc.d SERVICE disable

Wenn Sie Lauflevel angeben möchten.

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

Denken Sie daran, sich zu ändern Bedienung auf den Namen des Programms.

sudo service SERVICE restart

0
2017-07-01 09:46





Warum sichern Sie das Startscript nicht woanders und entfernen es in der Datei /etc/init.d/? Wenn das Update-rc.d nicht funktioniert.


0
2017-07-01 15:57