Frage Wie aktiviere oder deaktiviere ich Dienste?


Ich habe gelesen, wie man Dienste in Ubuntu aktiviert und deaktiviert, und es scheint, dass es verschiedene Möglichkeiten gibt, sie zu verwalten.

Die erste Methode, die ich gefunden habe, ist update-rc.d neue Dienste zum Start hinzufügen, die auf die /etc/init.d Ordner und dessen Inhalt.

Der andere, den ich gefunden habe, ist zu bearbeiten .conf Dateien in der /etc/init Mappe.

Was ist die empfohlene Methode zum Aktivieren / Deaktivieren / Hinzufügen von Diensten und warum?

Könnten Sie bitte ein kurzes, kugelsicheres Beispiel geben, wie Sie einen Dienst in Ubuntu hinzufügen und aktivieren und deaktivieren?


761
2017-12-29 21:03


Ursprung


Zum Netzwerken siehe: askubuntu.com/questions/230698/ ... - Jorge Castro
Dies wäre hilfreich für diejenigen, die auf Fedora 12 stecken und hier gelandet sind. Im Falle linkrot chkconfigist was du suchst. - Bleeding Fingers
Beachten Sie, dass die Antwort für Ubuntu 14.04 hier noch fehlt. - Reinier Post
@MarcelloNuccio: Ab Ubuntu 15.04 ist Upstart zugunsten von Systemd veraltet. - Dan Dascalescu


Antworten:


Es gibt Dienste, die über die GUI aktiviert / deaktiviert werden können (wie die startup Anwendung) oder das Terminal.

Für das Terminal haben Sie mehrere Möglichkeiten. Öffnen Sie zuerst ein Terminal (tippen Sie zum Beispiel "Terminal" in den Bindestrich und öffnen Sie es). Dann:

Temporäre Aktivierung / Deaktivierung von Diensten

Um Dienste zu stoppen und zu starten vorübergehend (Aktiviert / deaktiviert sie nicht für zukünftige Starts), können Sie eingeben service SERVICE_NAME. Beispielsweise:

  • sudo service apache2 stop (Wille HALT der Apache-Dienst bis zum Neustart oder bis Sie es erneut starten).

  • sudo service apache2 start (Wille ANFANG der Apache-Dienst vorausgesetzt, dass es zuvor gestoppt wurde.).

  • service apache2 status (Wird Ihnen den Status des Dienstes mitteilen, wenn er entweder aktiviert ist / ausgeführt wird oder nicht ausgeführt wird).

  • sudo service apache2 restart (Wille NEUSTART der Service. Dies wird am häufigsten verwendet, wenn Sie eine Konfigurationsdatei geändert haben. In diesem Fall, wenn Sie entweder eine PHP-Konfiguration oder eine Apache-Konfiguration geändert haben. Neustart erspart Ihnen das Stoppen / Starten mit 2 Befehlszeilen)

  • service apache2 (In diesem Fall, da Sie die Aktion nicht erwähnt haben, die für den Dienst ausgeführt werden soll, werden Ihnen alle für diesen bestimmten Dienst verfügbaren Optionen angezeigt.) Dieser Aspekt hängt vom Dienst ab, z fehlt ein Parameter. Für andere Dienste wie Netzwerkdienste würde es die kleine Liste aller verfügbaren Optionen erwähnen.


SYSTEMD

Ab Ubuntu 15.04 wird Upstart zugunsten von Systemd veraltet sein. Mit Systemd zur Verwaltung der Dienste können wir Folgendes tun:

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 stoppen. Bleibt nach dem Neustart nicht bestehen

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

systemctl reload SERVICE - Wenn der Dienst dies unterstützt, lädt es die zugehörigen Konfigurationsdateien neu, ohne einen Prozess zu unterbrechen, der den Dienst verwendet.

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

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

systemctl disable SERVICE - Schaltet den Dienst beim nächsten Neustart oder beim nächsten Stop-Ereignis aus. Es bleibt nach dem Neustart bestehen.

systemctl is-enabled SERVICE - Überprüfen Sie, ob beim nächsten Neustart ein Dienst zum Starten konfiguriert ist oder nicht.

systemctl is-active SERVICE - Überprüfen Sie, ob ein Dienst gerade aktiv ist.

systemctl show SERVICE - Zeigen Sie alle Informationen zum Service an.

sudo systemctl mask SERVICE - Deaktivieren Sie einen Dienst vollständig, indem Sie ihn mit verknüpfen /dev/null; Sie können den Dienst nicht manuell starten oder den Dienst aktivieren.

sudo systemctl unmask SERVICE - Entfernt den Link zu /dev/null und stellt die Fähigkeit wieder her, den Dienst zu aktivieren und manuell zu starten.


UPSTART (veraltet seit 15.04)

Wenn wir die offizielle Upstart-Methode verwenden möchten (Beachten Sie, dass im Moment nicht alle Services in Upstart konvertiert wurden), könnten wir die folgenden Befehle verwenden:

status SERVICE - Hier erfahren Sie, ob ein konvertierter Service läuft oder nicht. Beachten Sie, dass dies zugunsten von ... veraltet ist start, stop, status & restart. Es wird uns auch sagen, ob ein Service noch nicht in Upstart umgewandelt wurde:

Ein konvertierter Service würde normalerweise den aktuellen Status (Starten, Ausführen, Stoppen ...) und die Prozess-ID ausgeben. Ein nicht konvertierter Dienst würde einen Fehler über einen geben unbekannter Job.

Einige Verknüpfungen funktionieren möglicherweise nur mit service Befehl oben, aber nicht mit den folgenden Befehlen, es sei denn, sie werden zu 100% in Upstart-Dienste umgewandelt:

  • ANFANG - sudo start mysql

  • HALT - sudo stop mysql

  • NEUSTART - sudo restart mysql

  • STATUS - sudo status smbd

Aktivieren / Deaktivieren eines Dienstes

Um zu verhindern, dass ein Dienst permanent gestartet oder gestoppt wird, müssen Sie Folgendes tun:

echo manual | sudo tee /etc/init/SERVICE.override

wo die Strophe manual verhindert, dass Upstart den Dienst beim nächsten Start automatisch lädt. Jeder Service mit dem .override Die Endung hat Vorrang vor der ursprünglichen Servicedatei. Sie können den Dienst danach nur noch manuell starten. Wenn Sie dies nicht möchten, löschen Sie einfach die .override. Beispielsweise:

echo manual | sudo tee /etc/init/mysql.override

Wird den MySQL-Dienst einfügen manual Modus. Wenn du das nicht willst, kannst du es einfach machen

sudo rm /etc/init/mysql.override

und Neustart, damit der Dienst automatisch neu gestartet wird. Um einen Dienst zu aktivieren, ist es am üblichsten, ihn zu installieren. Wenn Sie Apache, Nginx, MySQL oder andere installieren, beginnen sie automatisch mit der Installation und werden jedes Mal gestartet, wenn der Computer startet. Deaktivieren, wie oben erwähnt, wird den Dienst nutzen manual.


757
2017-12-29 21:26



Müssen Sie hinzufügen? .service zu jedem Befehl? systemctl mongod status hat gut funktioniert. - Dan Dascalescu
@DanDascalescu nein du tust es nicht aber lass mich das klarstellen. - Luis Alvarado♦
Sollte die .override-Datei in /etc/init.d/ platziert werden, d. H. Wo der Dienst platziert wird? - Obi Wan - PallavJha
Warum Upstart ist in 15.04 veraltet? Was ist der richtige Weg, um Skripte beim Start / Neustart in Ubuntu 16.04 oder später zu starten? - Kamalakannan J
@KamalakannanJ hast du die RC-Level benutzt? (zB /etc/rc0.d) oder /etc/rc.local? - Luis Alvarado♦


Derzeit gibt es drei verschiedene Möglichkeiten, Software als Dienst in Ubuntu zu starten, SysV, Emporkömmling und systemd. Ein Dienst ist hier definiert als ein Programm, das vom System im Hintergrund ausgeführt wird, im Gegensatz zu einem Programm, das direkt vom Benutzer gestartet und ausgeführt wird.

SysV

Die traditionelle Art, Dienste unter Linux zu starten, war das Einfügen eines Skripts /etc/init.dund dann benutze die update-rc.d Befehl (oder in RedHat basierten Distributionen, chkconfig) um es zu aktivieren oder zu deaktivieren.

Dieser Befehl verwendet eine einigermaßen komplizierte Logik zum Erstellen von Symlinks /etc/rc#.d, die die Reihenfolge der Startdienste steuern. Wenn du läufst ls /etc/rc2.d Sie können die Reihenfolge sehen, in der Dienste mit einem Dateinamen wie z K##xxxx und begann mit Dateinamen S##xxxx. Das ## im S##xxxx bedeutet eine "Startreihenfolge" für den Service xxxx. Umgekehrt, die ## im K##xxxx bedeutet die Tötungsreihenfolge für Service xxxx.

Ein großes Problem mit SysV war, dass beim Booten des Systems alles musste seriell erledigt werden, eines nach dem anderen, was die Systemstart-Zeiten wirklich verlangsamt. Es wurde versucht, dies zu parallelisieren, aber sie waren willkürlich und schwer auszunutzen. Dies war der Hauptgrund dafür Emporkömmlingwurde erstellt.

Emporkömmling

Upstart verwendet Jobdefinitionsdateien in /etc/init um festzulegen, auf welche Ereignisse ein Dienst gestartet werden soll. Während des Systemstarts verarbeitet der Emporkömmling verschiedene Ereignisse und kann dann mehrere Dienste gleichzeitig starten. Dadurch können sie die Ressourcen des Systems voll ausnutzen, z. B. indem sie einen festplattengebundenen Dienst starten, während ein anderer CPU-gebundener Dienst ausgeführt wird oder während das Netzwerk auf die Zuweisung einer dynamischen IP-Adresse wartet.

Sie können alle Upstart-Jobdateien anzeigen, indem Sie sie ausführen ls /etc/init/*.conf

Lass mich einfach hier aufhören und sagen, wenn du nicht weißt, was ein Service ist oder was er tut, deaktiviere ihn NICHT!

Nicht alle Dienste wurden in Upstart umgewandelt. Während ich in den letzten Monaten am Server-Team von Canonical gearbeitet habe, habe ich an einer Reihe von konvertierten Job-Dateien gearbeitet, und der schönste Teil ist, dass man das ganze Script "Magie" loswerden kann und einfach ein wenige Befehle hier und da, um genau zu definieren, wie man den Dienst startet, und nichts mehr. Aber für jetzt nur eine Handvoll traditioneller Netzwerkdienste, wie Tintenfisch und Samba, wurden konvertiert.

Ist ein Service von Anfang an?

Um herauszufinden, ob ein Dienst auf Upstart basiert, können Sie den Befehl status ausführen:

status servicename

Wenn es ein ist Emporkömmling Job, wird es dies zeigen:

$ status statd
statd start/running, process 942

Aber wenn es nicht ist, wirst du etwas mehr wie folgt sehen:

$ status apache2
status: Unknown job: apache2

In diesem Fall, apache2 wurde nicht in konvertiert Emporkömmling. Also, um zu deaktivieren apache2 du rennst einfach

sudo update-rc.d apache2 disable
sudo service apache2 stop

Deaktivieren Sie Dienste (Jobs) in Emporkömmling

Upstart-Jobdefinitionen haben kein update-rc.d Befehl. Um den Job zu deaktivieren, müssen Sie die Jobdatei direkt bearbeiten, um sie zu deaktivieren. Es gibt zwei Möglichkeiten, dies zu tun.

Wenn Sie es immer noch manuell starten können, müssen Sie den Kommentar auskommentieren start on Bedingung. Angenommen, Sie möchten installieren Samba, aber nicht automatisch starten. Hier ist die Job-Datei (in natty):

description "SMB/CIFS File Server"
author      "Steve Langasek <steve.langasek@ubuntu.com>"

start on local-filesystems
stop on runlevel [!2345]

respawn

pre-start script
    RUN_MODE="daemons"

    [ -r /etc/default/samba ] && . /etc/default/samba

    [ "$RUN_MODE" = inetd ] && { stop; exit 0; }

    install -o root -g root -m 755 -d /var/run/samba
end script

exec smbd -F

Etwas deaktivieren Sambakannst du einfach ein setzen # vor dem "start on local-filesystems". Beachten Sie, dass es beim Booten nicht gestartet werden kann, aber Sie müssen es diesmal mit stoppen

sudo service smbd stop

Wenn Sie jedoch nie wollen Samba Zu Beginn würde ich vorschlagen, das Paket tatsächlich zu entfernen. Wenn Sie es jedoch installieren möchten, aber nicht starten können, können Sie auch Folgendes tun:

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

Deaktivieren Sie einen Dienst mit Start / Stop-Zeilengruppe (ab 11.04)

Beginnend mit der Version von Upstart, die in 11.04 sein wird, gibt es ein neues Schlüsselwort, das den start on und stop on Strophen: manual. Eine andere Möglichkeit, den Dienst ab 11.04 zu deaktivieren, besteht darin,

echo 'manual' | sudo tee /etc/init/mysql.override

# command from root shell
echo manual >> /etc/init/mysql.override

Sie können ein erstellen override Datei, um einen Dienst zu deaktivieren, ohne die Jobdefinition zu bearbeiten, indem Sie einfach die manual Schlüsselwort drin.


335
2018-01-06 18:25



Sieht so aus, als hätte 11.04 auch überschrieben. Damit echo manual >> /etc/init/<service>.override wird bevorzugt, da die ursprüngliche .conf filke intakt bleibt. Wie auch immer, es ist immer noch eine Schande, dass solch eine grundlegende Aktivierung / Deaktivierung 3 Jahre dauerte, und es gibt keine GUI dafür. - MestreLion
update-rc.d ist was wirklich zählt - Tim
scheint das ursprüngliche Thema viel mehr zu behandeln als die Antwort, die als die definitive Antwort durch das ursprüngliche Frageposter markiert wurde. Vielen Dank! :) - Henning
In meinem Fall die Datei /etc/init/ssh.conf existiert aber status ssh und status sshd beide sagen "Unbekannter Job". Diese Antwort scheint eine solche Möglichkeit nicht zu berücksichtigen. - Brian Z
status ssh gibt mir auch 'Unknown job', aber service ssh status funktioniert bei mir - ptim


sysv-rc-conf

Versuchen Sie es mit sysv-rc-conf

sudo apt-get install sysv-rc-conf

und starten Sie die Verwaltung der Dienste

sudo sysv-rc-conf

Welches interaktives Fenster wird so angezeigt

enter image description here

Sie können mit den Seiten weiter durch die Seiten navigieren Ctrl+n für die nächste Seite und Ctrl+p für vorherige Seite Sie können Dienste aktivieren und deaktivieren, indem Sie auswählen SPACEauf gewünschten Runlevels.

Jobs-Administrator

Eine andere Alternative wäre Jobs-Administrator durch die Installation durch

sudo apt-get install jobs-admin

Das bietet auch eine solche GUI

jobs-admin preview

Um mehr Jobs anzuzeigen, müssen Sie das Häkchen setzen Geschützte Jobs anzeigen von seiner Speisekarte.

chkconfig

Und die dritte Option wäre chkconfig,

sudo apt-get install chkconfig

Es kann über CLI verwendet werden chkconfig, Liste der Ein / Aus-Jobs anzeigen. Außerdem können wir Systemdienste mit anzeigen chkconfig –list

Dienste können mit aktiviert werden

chkconfig <service> on

Dienste können mit deaktiviert werden

chkconfig <service> off

Und wir können sogar unseren eigenen Dienst hinzufügen, indem wir ein richtiges Init-Skript mit korrekten Überschriften verwenden.

chkconfig --add <service>

update-rc.d

Und eine andere Option kann bezeichnet werden hier update-rc.d , kurz erklärt Hier.

Beachten Sie, dass für Ubuntu Server 12.04 update-rc.d  wird anstelle von chkconfig verwendet.


121
2018-06-28 18:00



auf dem Ubuntu-Server: Package chkconfig is not available, but is referred to by another package. - pwned
@pwned Sie können die aktualisierten Informationen zur Server Edition bearbeiten und veröffentlichen. Vielen Dank. - atenz
Ich habe getan, wie Sie es vorgeschlagen haben, jetzt ist es für Peer Review. - pwned
jobs-admin erlaubt keinen Jobwechsel (Ubuntu 14.04), stattdessen einen Absturzbericht ;-) - Sadi
sysv-rc-conf eignet sich nicht für Upstart oder Systemd, sondern nur für das alte System 5 rc-System, das seit fast einem Jahrzehnt nicht die Standardeinstellung für Ubuntu Linux ist. Debian Bug # 791689 erkennt dies an und fragt, warum es nicht als Konflikt mit Systemd markiert wurde. - JdeBP


Für diejenigen von uns, die Ubuntu über ssh laufen, finde ich die beste Option rcconf - ein textbasiertes Programm:

sudo apt-get install rcconf
sudo rcconf

alt text

Navigieren Sie mit Tab und Pfeiltasten, drücken Sie die Leertaste, um zu aktivieren / deaktivieren. Änderungen sind bei Neustarts persistent.

Screenshot von geliehen dieser BlogpostDas zeigt auch sysv-rc-conf - Ein ähnliches Tool, mit dem Sie auch den Runlevel einstellen können. (Für diejenigen, die sich genug um Runlevel kümmern, um sie ändern zu wollen :)

Leider funktioniert rcconf nicht mit Upstart (Dienste aufgelistet in /etc/init/*), nur mit dem traditionellen Mechanismus (ls -l /etc/init.d/* - diejenigen, die keine symbolischen Links sind.

Glücklicherweise wurden viele der Dienste, die relevant sind, wenn sie an einen Server angeschlossen werden (Apache, Tomcat, mdadm, boinc-client ...), noch nicht in den Upstart versetzt.


48
2018-01-06 18:44



Funktioniert das noch mit Emporkömmling? - oKtosiTe
Unglücklicherweise nicht. Aber es hat für all die Fälle funktioniert, die ich ändern wollte - die Upstart-Jobs scheinen hauptsächlich Dinge zu sein, die ich niemals deaktivieren möchte - Hardware-Uhr, Log-Daemon, Netzwerk usw. (zumindest auf dem Ubuntu-Server). Aber es ist etwas zu beachten (ich war nicht :), ich habe den Beitrag aktualisiert. - j-g-faustus
Leider wurde mysql in Emporkömmling umgewandelt. Und das ist ein Service, den ich nur nutze, wenn ich ein Projekt mache. - MestreLion
Es gibt einen Fehler mit rcconf unter Ubuntu 12.04, der verhindert, dass das Programm startet. Um das Problem zu lösen, müssen Sie das Dialogpaket installieren. - devius
Seit diese Antwort geschrieben wurde, update-rc.d wurde geändert, und Einige der veralteten Funktionen wurden entfernt. Der Debian-Fehler # 727735 weist darauf hin, dass rcconf nicht entsprechend angepasst wurde. Und nein, rcconf funktioniert auch nicht mit systemd und ist daher in den letzten zehn Jahren nicht auf eines der Standard-Init-Systeme für Ubuntu Linux anwendbar. - JdeBP


Ich habe herausgefunden, dass es dieses GUI-Tool gibt, etwas wie BUM, aber kompatibel mit Upstart:

  • Jobs-Administrator

    sudo apt-get install jobs-admin
    

18
2018-05-21 10:27



Aber es ist zu einfach, und erlaubt nicht, "geschützte Jobs" zu ändern (was ist das Jobbs? Apple hat Jobs, Betriebssystem hat Daemons!) - kakaz
Ich erlaube nicht einmal "ungeschützte Jobs" (Ubuntu 14.04) zu ändern, sondern stattdessen einen Absturzbericht ;-) - Sadi


Das Bearbeiten der vorhandenen Upstart-Konfigurationsdatei (wie oben beschrieben) ist keine so gute Idee. Ein aktualisiertes Paket könnte eine aktualisierte Konfiguration bereitstellen, und Sie mussten Ihre Änderungen immer wieder wiederholen.

Durch einen Blick auf man 5 init Man wird eine geeignetere Lösung finden: Verwenden einer Override-Konfiguration. Kurzes Beispiel: Sagen wir, wir hätten einen Dienst namens "foobar", also würde es eine Datei namens "foobar" geben /etc/init/foobar.conf mit seiner Upstart-Konfiguration. Jetzt möchten Sie diese Datei weder entfernen noch ändern - aber Sie möchten nicht, dass dieser Dienst ausgeführt wird? Also platziere ein überschreiben Datei daneben: /etc/init/foobar.override, die (optional den Header mit der Beschreibung und) enthält start on / stop on Linien Sie setzen eine Zeile mit einem Wort: manual. Auf diese Weise erzählst du dem Emporkömmling, dass er grundsätzlich den foobar.conf, überschreiben Sie jedoch die Startup - Definition, um diesen Service nur zu starten, wenn er manuell erzwungen wird (über service foobar start in unserem Beispiel).


12
2018-06-30 20:27





Es gibt auch die Boot-Up-Manager.

Installieren: sudo apt-get install bum

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

enter image description here


8
2018-05-20 14:47



Vergessen Sie nicht, die Schaltfläche "Erweitert" zu überprüfen. - not2qubit