Beenden Sie das Programm, das beim Start unter Linux ausgeführt wird
29
Wie stoppe ich ein Programm, das beim Start unter Linux ausgeführt wird? Ich möchte einige Apps aus dem Startup entfernen, damit sie supervisordzB von apache2 verwaltet werden können
Warum brauchen Sie -f (ich nehme an, es ist force) für Debian-basierte Distributionen?
Frozenskys
2
Hier sind zwei Dateisätze im Spiel. Sie haben das aktuelle Init-Skript in /etc/init.d/ und Sie haben die Links dazu in Ihrem Runlevel-Verzeichnis /etc/rcrunlevel.d/. Diese Leute verweisen auf das Skript in /etc/init.d/ Wenn Sie -f nicht verwenden, schlägt update-rd.d fehl, WENN das Skript in /etc/init.d/ bereits gelöscht ist. Wenn Sie -f update-rc.d verwenden, werden die Verknüpfungsdateien ordnungsgemäß gelöscht, unabhängig davon, ob das Skript /etc/init.d/ gelöscht wurde oder nicht.
Jacksonh
Ah, das macht sehr viel Sinn, ich hatte vergessen, dass die Runlevel-Skripte nur Links zu den Init-Skripten waren. Danke für die extra Erklärung.
Frozenskys
6
Wenn Sie mit einem modernen Ubuntu-System und einigen anderen Distributionen arbeiten, müssen Sie möglicherweise eine Kombination aus herkömmlichen Init-Skripten und Upstart-Skripten verwenden. Die Verwaltung von Init-Skripten wird durch andere Antworten abgedeckt. Mit der folgenden Methode können Sie verhindern, dass ein Startdienst beim Start gestartet wird:
Das Problem bei dieser Methode besteht darin, dass Sie den Dienst nicht mit den folgenden Methoden starten können:
# service start servicename
Alternativ dazu können Sie die servicename.confDatei in Ihrem bevorzugten Editor öffnen und alle Zeilen auskommentieren, die mit folgendem beginnen:
start on
Ändern Sie dies also in
#start on ...
wo das "..." ist was auch immer vorher nach "start on" war. Auf diese Weise müssen Sie sich beim erneuten Aktivieren nicht mehr an die Parameter für "Start bei" erinnern.
Wenn Sie eine neue Version von upstart haben, können Sie am Ende der Konfigurationsdatei einfach das Wort "manual" hinzufügen. Sie können dies direkt von der Shell aus tun:
# echo "manual" >> /etc/init/servicename.conf
Dies führt dazu, dass upstart alle "start on" -Phrasen früher in der Datei ignoriert.
Vielen Dank! Ich hatte viele Methoden ausprobiert, aber dieser systmctlBefehl funktionierte gut.
geliebt.von.Jesus
1
So listen Sie alle Startdienste auf
systemctl
So verhindern Sie, dass ein Dienst beim Start ausgeführt wird
sudo systemctl disable servicename
Zum Beispiel, wenn wir ssh Server beim Start stoppen müssen
sudo systemctl disable sshd.service
Wir können dies wieder mit aktivieren
sudo systemctl enable sshd.service
Fast alle Linux-Distributionen verwenden systemd für das Bootstrapping von Startdiensten. Daher funktionieren die obigen Befehle für die meisten Distributionen.
Willkommen bei U & L und vielen Dank für Ihren Beitrag! Ich möchte darauf hinweisen, dass diese Frage jetzt ungefähr acht Jahre alt ist, sodass die akzeptierte Antwort für die Zeit korrekt war. Mit systemctl richtig sein jetzt , aber es ist richtig für eine andere Frage .
Jeff Schaller
@Prince danke für die ausführlichen Erklärungen. Es hat mir geholfen zu verstehen, wie der Startvorgang in meinem Xubuntu funktioniert.
geliebt.von.Jesus
0
Slackware und Arch Linux haben ähnliche Methoden zum Stoppen / Starten von Prozessen beim Booten, die sich von den oben aufgeführten Beispielen im Ubuntu- und Redhat-Stil unterscheiden.
Sowohl unter Slackware als auch unter Arch Linux sind sh-Skripte in einem Verzeichnis vorhanden /etc/rc.d, normalerweise ein Skript pro Daemon oder ein Skript pro Subsystem.
Beispielsweise startet Slackware den Apache-Webserver mit einem Skript /etc/rc.d/rc.httpd, das zum entsprechenden Zeitpunkt während des Systemstarts mit dem Argument "start" aufgerufen wird. Arch Linux hat unterschiedlich benannte Skripte, aber das Gleiche passiert.
Um zu verhindern, dass ein Prozess während des Systemstarts gestartet wird, müssen Sie unter Slackware lediglich das entsprechende Skript in /etc/rc.d nicht ausführbar machen. So verhindern Sie, dass Apache beim nächsten Start gestartet wird:
chmod -x /etc/rc.d/rc.httpd
So stoppen Sie einen Apache, der beim Booten gestartet wurde: /etc/rc.d/rc.httpd stop Sie müssen root sein.
Arch ist etwas komplexer. Die Datei /etc/rc.conf, ein Shell-Skript, enthält ein Array DAEMONS. Um zu verhindern, dass Apache beim Booten startet, ändern Sie diese Zeile in /etc/rc.conf:
1) Tippen Sie auf Ihrer Tastatur auf die Supertaste. 2) Suchen Sie nach "Startup Applications". 3) Wählen Sie das Programm aus, das Sie deaktivieren möchten.
Antworten:
Verwenden Sie je nach Distribution das Tool chkconfig oder update-rc.d, um Systemdienste zu aktivieren / deaktivieren.
Auf einem Red Hat / Suse / Mandrake Style System:
Unter Debian:
Weitere Informationen finden Sie in den Manpages.
quelle
Wenn Sie mit einem modernen Ubuntu-System und einigen anderen Distributionen arbeiten, müssen Sie möglicherweise eine Kombination aus herkömmlichen Init-Skripten und Upstart-Skripten verwenden. Die Verwaltung von Init-Skripten wird durch andere Antworten abgedeckt. Mit der folgenden Methode können Sie verhindern, dass ein Startdienst beim Start gestartet wird:
Das Problem bei dieser Methode besteht darin, dass Sie den Dienst nicht mit den folgenden Methoden starten können:
Alternativ dazu können Sie die
servicename.conf
Datei in Ihrem bevorzugten Editor öffnen und alle Zeilen auskommentieren, die mit folgendem beginnen:Ändern Sie dies also in
wo das "..." ist was auch immer vorher nach "start on" war. Auf diese Weise müssen Sie sich beim erneuten Aktivieren nicht mehr an die Parameter für "Start bei" erinnern.
Wenn Sie eine neue Version von upstart haben, können Sie am Ende der Konfigurationsdatei einfach das Wort "manual" hinzufügen. Sie können dies direkt von der Shell aus tun:
Dies führt dazu, dass upstart alle "start on" -Phrasen früher in der Datei ignoriert.
quelle
Auf den neuesten Fedora- und Future RHEL-Systemen
Deaktiviert den httpd-Dienst
quelle
systmctl
Befehl funktionierte gut.So listen Sie alle Startdienste auf
So verhindern Sie, dass ein Dienst beim Start ausgeführt wird
Zum Beispiel, wenn wir ssh Server beim Start stoppen müssen
Wir können dies wieder mit aktivieren
Fast alle Linux-Distributionen verwenden systemd für das Bootstrapping von Startdiensten. Daher funktionieren die obigen Befehle für die meisten Distributionen.
quelle
Slackware und Arch Linux haben ähnliche Methoden zum Stoppen / Starten von Prozessen beim Booten, die sich von den oben aufgeführten Beispielen im Ubuntu- und Redhat-Stil unterscheiden.
Sowohl unter Slackware als auch unter Arch Linux sind sh-Skripte in einem Verzeichnis vorhanden
/etc/rc.d
, normalerweise ein Skript pro Daemon oder ein Skript pro Subsystem.Beispielsweise startet Slackware den Apache-Webserver mit einem Skript
/etc/rc.d/rc.httpd
, das zum entsprechenden Zeitpunkt während des Systemstarts mit dem Argument "start" aufgerufen wird. Arch Linux hat unterschiedlich benannte Skripte, aber das Gleiche passiert.Um zu verhindern, dass ein Prozess während des Systemstarts gestartet wird, müssen Sie unter Slackware lediglich das entsprechende Skript in /etc/rc.d nicht ausführbar machen. So verhindern Sie, dass Apache beim nächsten Start gestartet wird:
So stoppen Sie einen Apache, der beim Booten gestartet wurde:
/etc/rc.d/rc.httpd stop
Sie müssen root sein.Arch ist etwas komplexer. Die Datei /etc/rc.conf, ein Shell-Skript, enthält ein Array DAEMONS. Um zu verhindern, dass Apache beim Booten startet, ändern Sie diese Zeile in /etc/rc.conf:
Zu dieser Zeile:
Um einen bereits ausgeführten Apache zu stoppen, führen Sie ihn
/etc/rc.d/httpd stop
als root aus.quelle
Unter Ubuntu 10.04 können Sie einige Startprogramme über die GUI steuern.
System→ Preferences→Startup Applications
quelle
1) Tippen Sie auf Ihrer Tastatur auf die Supertaste. 2) Suchen Sie nach "Startup Applications". 3) Wählen Sie das Programm aus, das Sie deaktivieren möchten.
quelle