Wie verhindere ich, dass Linux-Dienste automatisch gestartet werden?

19856
Aviv

Ich habe kürzlich von Windows zu Linux (xubuntu) migriert.

Ich bin Entwickler und habe alles installiert, was ich brauche, LAMP. Unter Windows habe ich alle unnötigen Dienste deaktiviert. Ich brauche nicht, dass der Apache- oder MySQL-Dienst ständig ausgeführt wird. Wann immer ich MySQL brauchte, benutzte ich:

net start mysql 

Wie mache ich das auch in Linux?

  1. Nicht benötigte Daemons vom automatischen Start deaktivieren?
  2. Starten Sie sie nur, wenn ich sie brauche?
8
Ich denke, Sie sollten die genaue Version von Ubuntu angeben, die Sie verwenden. Neue Ubuntu-Versionen verwenden Upstart, das über eigene Gotchas verfügt. vtest vor 13 Jahren 3
Edit: Ich benutze Xubuntu letzte Version 10.04, aber ich möchte nicht verwenden und GUI dafür nur vom Terminal. @Prhq hat etwas in seiner Antwort gefunden. Was ist Emporkömmling? Aviv vor 13 Jahren 0
Gehört an anderer Stelle, entweder auf Serverfehler oder Unix. Immer noch nützlich. ripper234 vor 12 Jahren 0

3 Antworten auf die Frage

8
hultqvist

In den meisten Linux-Distributionen können Sie Dienste manuell starten / stoppen, indem Sie (als root oder mit sudo) die folgenden Befehle ausführen:

# /etc/init.d/apache2 start # /etc/init.d/mysqld start  # /etc/init.d/apache2 stop # /etc/init.d/mysqld stop 

Welche Dienste automatisch gestartet werden, wird durch Dateilinks in /etc/rc Finden Sie Ihren aktuellen Runlevel, indem Sie als root den Befehl "runlevel" verwenden

# runlevel N 2 

Was hier für Runlevel 2 steht? Nun müssen Sie nur noch die Dateien in /etc/rc2.d/ entfernen, die nicht gestartet werden sollen.

Das Entfernen von Apache und MySQL auf einem Desktop ist in der Regel in Ordnung. Beachten Sie jedoch das Entfernen anderer Dienste.

Dies ist ziemlich irreführend, selbst wenn Sie "die meisten Distributionen" sagten. Ich würde Ihr Rezept als Distro-spezifisch einstufen. vtest vor 13 Jahren 2
An was hast du gedacht? Ich kann nur an ArchLinux denken (aber diese Benutzer sollten bereits wissen, was sie tun). Natürlich haben einige Distributionen spezielle Werkzeuge, aber die obige Technik funktioniert auch bei ihnen. hultqvist vor 13 Jahren 0
Seltsam, ich kann eine Datei namens S91apache2 im Verzeichnis /etc/rc2.d sehen. Ich denke, es startet den Apache2 ... aber ich kann keine Datei über MySQL finden. Wo kann ich etwas über diese automatisch startenden Daemons erfahren? Aviv vor 13 Jahren 0
Dann ist der MySQL-Server möglicherweise nicht für den automatischen Start konfiguriert. Diese Seite sieht nach einer guten Erklärung aus: http://www.yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html hultqvist vor 13 Jahren 0
Beachten Sie, dass das Verzeichnis unter * BSD und dem Slackware-Baum `/ etc / rc.d /` lautet. new123456 vor 12 Jahren 0
6
Gilles

Ubuntu 10.04 befindet sich mitten im Übergang zwischen zwei Service-Management-Systemen: SysVinit (das traditionelle System, das von den meisten Linux-Distributionen verwendet wird) und Upstart (ein neueres System, das von Ubuntu unterstützt wird und in immer mehr Distributionen verfügbar wird).

SysVinit Service Management-Skripte sind in /etc/init.d. Sie können den Dienst mit starten und mit /etc/init.d/SERVICENAME startbeenden /etc/init.d/SERVICENAME stop. Ob der Dienst beim Booten automatisch gestartet wird, hängt vom Vorhandensein symbolischer Links ab, in /etc/rc?.ddenen ?sich eine Ziffer von 2bis befindet 5(der Runlevel ). Die einfachste Möglichkeit, zu verhindern, dass ein Dienst beim Start automatisch gestartet wird, ist die Verwendung update-rc.d SERVICENAME disable.

Konfigurationsdateien für die Upstart-Dienstverwaltung befinden sich in /etc/init. Sie können den Dienst mit starten und mit start SERVICENAMEbeenden stop SERVICENAME. Die Konfigurationsdatei /etc/init/SERVICENAME.confenthält eine Zeile, die angibt, wann den Dienst zu starten: start on …. Eine einfache Möglichkeit zum Deaktivieren dieser Dienste besteht darin, diese Zeile in zu ändern start on never and (…). Wenn Sie die Datei nicht bearbeiten möchten, können Sie den Dienst auch vollständig deaktivieren, ohne das Verpackungssystem zu verwirren, indem Sie ihn umbenennen, um ihn nicht zu beenden .conf.

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf 

Ab Ubuntu 10.04 enthält Apache ein SysVinit-Skript und Mysql ein Upstart-Skript.

Ist die Bearbeitung der servicename.conf wirklich der bevorzugte Weg? Insbesondere wenn Updates diese Konfigurationsdateien theoretisch aktualisieren und Ihre Änderungen überschreiben können Masse vor 13 Jahren 0
@Masse: Es ist nicht immer der bevorzugte Weg, aber es hat den Vorteil, dass es immer funktioniert. Einige Dienste lesen eine Datei in "/ etc / default" und haben dort die Option "START_FOO", die Sie deaktivieren können. Viele erwarten jedoch, dass sie ausgeführt werden, wenn sie installiert sind. Updates überschreiben Ihre Änderungen nicht ohne Aufforderung, da dies alles Conffiles sind. Gilles vor 13 Jahren 0
Beeindruckend. Dies scheint ein großer Rückschritt zu sein. Masse vor 12 Jahren 0
@ Masse: Conffiles sollen vom Administrator bearbeitet werden. Wenn Sie das nicht möchten, können Sie auch `dpkg-divert` verwenden, um die Servicedatei umzubenennen. Wenn Sie dies tun, können Sie den Dienst jedoch nicht explizit starten. Gilles vor 12 Jahren 0
1
Nandesh

Für Ubuntu-Versionen, die systemd (15.04 und höher) verwenden, verwenden Sie:

systemctl disable service 

Das wird die Arbeit machen. Der Dienst wird deaktiviert und nach einem Neustart nicht neu gestartet. Zum vorübergehenden Aktivieren starten Sie einfach den Dienst. Nicht aktivieren .

Um den Dienstnamen zu finden, verwenden Sie

service --status-all 

Andere Befehle sind:

systemctl start service- Verwenden Sie es, um einen Dienst zu starten. Bleibt nach dem Neustart nicht bestehen

systemctl stop service- Verwenden Sie es, um einen Dienst zu beenden. Bleibt nach dem Neustart nicht bestehen

systemctl restart service - Verwenden Sie es, um einen Dienst neu zu starten

systemctl status service- Zeigt den Status eines Dienstes an. Gibt an, ob zurzeit ein Dienst ausgeführt wird.

systemctl enable service- Schaltet den Dienst beim nächsten Neustart oder beim nächsten Startereignis ein. Es bleibt nach dem Neustart bestehen.

systemctl disable service- Deaktiviert den Dienst beim nächsten Neustart oder beim nächsten Stoppereignis. Es bleibt nach dem Neustart bestehen.