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

Frozenskys
quelle
Genau deshalb habe ich es nicht markiert ... Ich suche nach allen Variationen, da ich mit ziemlich vielen verschiedenen Distributionen arbeite.
Frozenskys

Antworten:

29

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:

sudo chkconfig apache2 off 

Unter Debian:

sudo update-rc.d -f apache2 remove

Weitere Informationen finden Sie in den Manpages.

jacksonh
quelle
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:

# mv /etc/init/servicename.conf /etc/init/servicename.conf.disabled

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.

Steven D
quelle
2

Auf den neuesten Fedora- und Future RHEL-Systemen

systemctl disable httpd.service

Deaktiviert den httpd-Dienst

Alastair
quelle
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.

Prinz
quelle
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:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd httpd ntpd postgresql)

Zu dieser Zeile:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd ntpd postgresql)

Um einen bereits ausgeführten Apache zu stoppen, führen Sie ihn /etc/rc.d/httpd stopals root aus.

Bruce Ediger
quelle
0

Unter Ubuntu 10.04 können Sie einige Startprogramme über die GUI steuern.

SystemPreferencesStartup Applications

Einstellungen für Startanwendungen

jjclarkson
quelle
1
Originalbild ist nicht mehr da.
Tshepang
-1

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.

Bhasha Bhavanishankar
quelle