Wie deaktiviere ich einen Upstart-Dienst in Ubuntu 10.10?

27

In 10.10 wird statt sysvinit upstart verwendet.

Es ist möglich, lästige Upstart-Services zu entfernen, die Sie nicht möchten, indem Sie die entsprechende Datei in /etc/init/blah.conf entfernen

Dies scheint jedoch ein hartnäckiger Ansatz zu sein. Wie konfiguriere ich upstart richtig, um diese Dienste über die Befehlszeile selektiv ein- und ausschalten zu können?

Als praktisches Beispiel funktionieren die hier aufgeführten Antworten zum Ausschalten von GDM mit rcconf nicht mehr: Wie verhindere ich, dass GDM beim Booten unter Ubuntu ausgeführt wird?

Doug
quelle
Nb. Anscheinend gibt es in einigen Ubuntu-Versionen im Menü des grafischen Desktops einen Diensteintrag, mit dem dies konfiguriert werden kann. Das ist bei mir nicht vorhanden. Ich bin speziell auf der Suche nach einer Kommandozeilenlösung.
Doug
Die aktuellste Antwort ist auf askubuntu . Lesen Sie auch die Kommentare!
Marcello Nuccio
2
Dies ist jetzt im Abschnitt Deaktivieren eines Auftrags für den automatischen Start dokumentiert .
Marcello Nuccio
@Marcello Hm ... gab es einen Grund, das zu sagen? Die aktuellste Antwort ist immer noch dieselbe. Entfernen Sie die Datei oder löschen Sie die ersten Zeilen manuell.
Doug
Die neueste Lösung ist echo manual >> /etc/init/<service>.override, und dies wird nur in den Kommentaren (und in der offiziellen Dokumentation) erwähnt. Ich habe es nicht leicht gefunden, deshalb habe ich es hier erwähnt.
Marcello Nuccio

Antworten:

19

Wenn Sie in /etc/init.d nachsehen, werden Sie feststellen, dass alle Dienste, die über upstart konfiguriert werden, nur symbolische Links zu / lib / init / upstart sind. Wenn Sie sie also aus /etc/init.d entfernen, wird nur der Link entfernt - nicht das Skript .

Wenn Sie eine Schnittstelle dazu benötigen, können Sie das chkconfigpackage ( apt-get install chkconfig) installieren, das ein nützliches Befehlszeilen-Tool bietet:

# chkconfig --list
acpi-support              0:off  1:off  2:on   3:on   4:on   5:on   6:off
acpid                     0:off  1:off  2:off  3:off  4:off  5:off  6:off
alsa-mixer-save           0:off  1:off  2:off  3:off  4:off  5:off  6:off
anacron                   0:off  1:off  2:off  3:off  4:off  5:off  6:off
apache2                   0:off  1:off  2:on   3:on   4:on   5:on   6:off
apparmor                  0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on 
apport                    0:off  1:off  2:off  3:off  4:off  5:off  6:off
atd                       0:off  1:off  2:off  3:off  4:off  5:off  6:off
.... and so on ....

Sie können Dienste für bestimmte Run-Levels aktivieren / deaktivieren (oder sie einfach ein- und ausschalten) mit:

# chkconfig -s <service> <state/runlevels>

zum Beispiel:

# chkconfig -s gdm off

um es komplett auszuschalten,

# chkconfig -s gdm on

um es mit dem Defaultsm einzuschalten oder

# chkconfig -s gdm 34

um es nur für die Laufstufen 3 und 4 einzuschalten.

Diesen Befehl finden Sie normalerweise auf RHEL-basierten Systemen (CentOS, Fedora usw.).

AKTUALISIEREN

Dies gilt speziell für Ubuntu und gdm / kdm / whatever.

Beim Start von gdm wird die Konfigurationsdatei /etc/init/gdm.conf aufgerufen

Diese Datei verweist dann auf / etc / X11 / default-display-manager, um festzustellen, ob es sich um den Standard-Display-Manager für das System handelt. Wenn dies der Fall ist, wird es gestartet.

Der / etc / X11 / default-display-manager enthält nur:

/usr/sbin/gdm

Sie können dies durch einen anderen Anzeigemanager ersetzen oder die Datei vollständig entfernen und gdm nicht starten.

Eine Zeile aus der Datei /etc/init/gdm.conf:

[ ! -f /etc/X11/default-display-manager -o "$(cat /etc/X11/default-display-manager 2>/dev/null)" = "/usr/sbin/gdm" ] || { stop; exit 0; }

Es heißt "Wenn die Datei / etc / X11 / default-display-manager nicht existiert oder keine enthält, /usr/sbin/gdmdann beende"

Majenko
quelle
Das hat nicht geklappt Genau wie rcconf listet chkconfig gdm nicht als Dienst auf, der auf einer beliebigen Ausführungsebene gestartet werden kann. Beim Neustart wird es jedoch geladen. chkconfig -s gdm off hat den Start nicht verhindert.
Doug
2
Es gibt hier einen Link, der darauf hinweist, dass chkconfig nicht das geeignete Tool ist: ubuntuforums.org/showthread.php?t=1559266
Doug
Ich habe Ubuntus Startup noch nie gemocht - und Linux im Allgemeinen. Es wirkt schon immer so chaotisch und klobig. Gib mir jeden Tag FreeBSD's rcng. Wie auch immer - speziell für Ubuntus Display-Manager haben Sie, was meine Bearbeitung zeigt ...
Majenko
+1 für korrektes nachher bearbeiten mit Details für Emporkömmling.
Doug
5

Ich fand das Tool sysv-rc-conf immer sehr hilfreich, es hat eine sehr schöne und benutzerfreundliche Oberfläche.

installiere es so:

sudo apt-get update
sudo apt-get install sysv-rc-conf

benutze es so:

sudo sysv-rc-conf
n0mad
quelle
1
Ich glaube nicht, dass das für Emporkömmlingsdienste funktioniert.
Rajat Gupta
3

Werfen man 5 initSie einfach einen Blick darauf und Sie werden eine passendere Lösung finden. Kurzes Beispiel: Angenommen, wir haben einen Dienst mit dem Namen "foobar", sodass eine Datei /etc/init/foobar.confmit ihrer Startkonfiguration aufgerufen wird . Jetzt möchten Sie diese Datei nicht entfernen oder ändern - aber Sie möchten auch nicht, dass dieser Dienst ausgeführt wird? So platzieren Sie eine Überschreibung Datei neben ihm: /etc/init/foobar.override, enthält (optional den Header mit der Beschreibung und) stattdessen die start on/ stop onLinien Sie eine Zeile mit einem Wort platzieren: manual. Auf diese Weise weisen Sie upstart an, grundsätzlich den zu verwenden foobar.conf, die Startdefinition jedoch zu überschreiben, um diesen Dienst nur dann zu starten, wenn er manuell erzwungen wird ( service foobar startin unserem Beispiel über).

Izzy
quelle
2

Meine Empfehlung wäre, einfach alle Zeilen "start on" und "stop on" auszukommentieren. Das hat gut funktioniert, als ich "initctl show-config" ausgeführt habe, um festzustellen, ob der automatische Start meines gewünschten Programms deaktiviert war.

user35060
quelle
1

Upstart ist ein ereignisgesteuerter Init-Manager, und Runlevel sind nicht der Hauptmechanismus für die Entscheidung, wann ein Dienst gestartet wird. Stattdessen werden Dienste gestartet, wenn alle Abhängigkeiten erfüllt sind. Dies ermöglicht eine größere Parallelität während des Startvorgangs und beschleunigt den Startvorgang.

Unter Ubuntu 11.04 konnte ich GDM deaktivieren, indem ich die Datei /etc/init/gdm.conf bearbeitete und alle "start on" -Einträge entfernte. Hier ist meine Vorbearbeitung:

start on (filesystem
          and started dbus
          and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
               or stopped udev-fallback-graphics))
stop on runlevel [016]

Hier ist meine Nachbearbeitung:

start on
stop on runlevel [016]
Jason Martens
quelle
1
Richtig; Dies ist jedoch im Grunde nichts Besseres als das Verschieben / Entfernen der Datei etc / init / gdm.conf. Ich bin (noch) erstaunt, dass das manuelle Bearbeiten der Konfigurationsdatei die einzige Möglichkeit zu sein scheint.
Doug
1

Hier ist eine Lösung:

http://ubuntuforums.org/showpost.php?p=9416839&postcount=3

@ Matt Jenkins

Ich habe Ubuntus Startup noch nie gemocht - und Linux im Allgemeinen. Es hat immer so chaotisch und klobig gewirkt. Gib mir jeden Tag FreeBSD's rcng. Wie auch immer - spezifisch für Ubuntus Display-Manager> Sie haben das, was meine Bearbeitung zeigt ...

Arch Linux hat ein schönes Init-System. Systemd bläst jedoch jedes andere Init-System vom Planeten.

Pawlo
quelle