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, besteht update-rc.d
darin, dem Start neue Dienste hinzuzufügen, die auf den /etc/init.d
Ordner und dessen Inhalt abzielen .
Die andere, die ich gefunden habe, ist das Bearbeiten von .conf
Dateien im /etc/init
Ordner.
Was ist die empfohlene Methode zum Aktivieren / Deaktivieren / Hinzufügen von Diensten und warum?
Könnten Sie bitte ein kurzes, kugelsicheres, schrittweises Beispiel geben, wie man einen Dienst in Ubuntu hinzufügt und aktiviert und deaktiviert?
chkconfig
ist, wonach Sie suchen.autostart
Manifesten oder in*.service
Dateien an mehreren Speicherorten sowie ininit.d
oder konfiguriertcrontab
. Siehe: unix.stackexchange.com/a/525845/43233Antworten:
Es gibt Dienste, die über die GUI (wie die
startup
Anwendung) oder das Terminal aktiviert / deaktiviert werden können .Für das Terminal haben Sie mehrere Möglichkeiten. Öffnen Sie zunächst ein Terminal (geben Sie beispielsweise "terminal" in den Bindestrich ein und öffnen Sie es). Dann:
Temporäres Aktivieren / Deaktivieren von Diensten
Um Dienste vorübergehend anzuhalten und zu starten (aktiviert / deaktiviert sie nicht für zukünftige Starts ), können Sie Folgendes eingeben
service SERVICE_NAME
. Zum Beispiel:sudo service apache2 stop
( Stoppt den Apache-Dienst bis zum Neustart oder bis zum nächsten Neustart).sudo service apache2 start
( Startet den Apache-Dienst unter der Annahme, dass er zuvor gestoppt wurde.)service apache2 status
(Zeigt den STATUS des Dienstes an, wenn er entweder aktiviert ist / läuft oder deaktiviert ist / NICHT läuft.)sudo service apache2 restart
(Wird den Dienst neu starten . 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. Durch einen Neustart müssen Sie nicht mit zwei Befehlszeilen anhalten / beginnen )service apache2
(Da Sie in diesem Fall die auszuführende AKTION für den Dienst nicht erwähnt haben, werden Ihnen alle für diesen bestimmten Dienst verfügbaren Optionen angezeigt.) Dieser Aspekt variiert je nach Dienst. Bei MySQL wird dies beispielsweise nur erwähnt fehlt ein Parameter. Bei anderen Diensten wie Netzwerkdiensten wird die kleine Liste aller verfügbaren Optionen erwähnt.SYSTEMD
Ab Ubuntu 15.04 wird Upstart zugunsten von Systemd nicht mehr empfohlen. 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 bestehensystemctl stop SERVICE
- Verwenden Sie es, um einen Dienst zu stoppen. Bleibt nach dem Neustart nicht bestehensystemctl restart SERVICE
- Verwenden Sie es, um einen Dienst neu zu startensystemctl reload SERVICE
- Wenn der Dienst dies unterstützt, werden die zugehörigen Konfigurationsdateien erneut geladen, ohne dass ein Prozess unterbrochen wird, der den Dienst verwendet.systemctl status SERVICE
- Zeigt den Status eines Dienstes an. Gibt an, ob gerade ein Dienst ausgeführt wird.systemctl enable SERVICE
- Schaltet den Dienst ein, beim nächsten Neustart oder beim nächsten Startereignis. 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.systemctl is-enabled SERVICE
- Überprüfen Sie, ob ein Dienst derzeit so konfiguriert ist, dass er beim nächsten Neustart gestartet wird oder nicht.systemctl is-active SERVICE
- Überprüfen Sie, ob ein Dienst gerade aktiv ist.systemctl show SERVICE
- Alle Informationen zum Dienst anzeigen.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 aktivieren.sudo systemctl unmask SERVICE
- Entfernt die Verknüpfung zu/dev/null
und stellt die Fähigkeit wieder her, den Dienst zu aktivieren und / oder manuell zu starten.UPSTART (veraltet seit 15.04)
Wenn wir die offizielle Upstart-Methode verwenden möchten (Beachten Sie, dass momentan nicht alle Dienste auf Upstart konvertiert wurden), können wir die folgenden Befehle verwenden:
status SERVICE
- Hier erfahren wir, ob ein konvertierter Dienst ausgeführt wird oder nicht. Beachten Sie, dass dies für veraltetstart
,stop
,status
&restart
. Es wird uns auch mitgeteilt, ob ein Dienst noch nicht auf upstart konvertiert wurde:Ein konvertierter Dienst gibt normalerweise den aktuellen Status (Starten, Ausführen, Stoppen ...) und die Prozess-ID aus. Ein nicht konvertierter Dienst würde bei einem unbekannten Job einen Fehler melden .
Einige Verknüpfungen funktionieren möglicherweise nur mit dem
service
obigen Befehl, nicht jedoch mit den folgenden Befehlen, es sei denn, sie sind zu 100% in Upstart-Dienste konvertiert:START -
sudo start mysql
STOP -
sudo stop mysql
NEUSTART -
sudo restart mysql
STATUS -
sudo status smbd
Aktivieren / Deaktivieren eines Dienstes
Um zu verhindern, dass ein Dienst dauerhaft gestartet oder gestoppt wird, müssen Sie folgende Schritte ausführen:
Die Zeilengruppe verhindert
manual
, dass Upstart den Dienst beim nächsten Start automatisch lädt. Jeder Dienst mit der.override
Endung hat Vorrang vor der ursprünglichen Dienstdatei. Sie können den Dienst anschließend nur manuell starten. Wenn Sie dies nicht möchten, löschen Sie einfach die.override
. Zum Beispiel:Versetzt den MySQL-Dienst in den
manual
Modus. Wenn Sie dies nicht möchten, können Sie dies anschließend einfach tunund Neustart, damit der Dienst automatisch neu gestartet wird. Um einen Dienst zu aktivieren, müssen Sie ihn am häufigsten installieren. Wenn Sie Apache, Nginx, MySQL oder andere Programme installieren, werden diese nach Abschluss der Installation automatisch gestartet und bei jedem Neustart des Computers neu gestartet. Durch Deaktivieren wird, wie oben erwähnt, der Dienst verwendet
manual
.quelle
.service
zu jedem Befehl etwas hinzufügen ?systemctl mongod status
hat prima funktioniert.systemd
Befehlssatz funktioniert unter Ubuntu 18.04.Derzeit gibt es drei verschiedene Möglichkeiten, um Software als Dienst in Ubuntu, SysV , Upstart und systemd zu starten . Ein Dienst wird hier als ein Programm definiert, das vom System im Hintergrund ausgeführt wird, im Gegensatz zu einem Programm, das direkt vom Benutzer gestartet und ausgeführt wird.
SysV
Die herkömmliche Methode zum Starten von Diensten unter Linux bestand darin, ein Skript zu platzieren
/etc/init.d
und es dann mit demupdate-rc.d
Befehl (oder in RedHat-basierten Distributionenchkconfig
) zu aktivieren oder zu deaktivieren.Dieser Befehl verwendet eine etwas komplizierte Logik, um Symlinks zu erstellen
/etc/rc#.d
, die die Reihenfolge beim Starten von Diensten steuern. Wenn Sie ausführenls /etc/rc2.d
, können Sie die Reihenfolge sehen, in der Dienste mit einem Dateinamen wie dem abgebrochenK##xxxx
und mit Dateinamen gestartet werdenS##xxxx
. Das##
inS##xxxx
bedeutet eine "Startreihenfolge" für den Servicexxxx
. Im Gegensatz dazu der##
inK##xxxx
bedeutet die Abtötung , um für den Dienstxxxx
.Ein Hauptproblem bei SysV war, dass beim Booten des Systems alles seriell nacheinander ausgeführt werden musste, was die Bootzeiten des Systems sehr verlangsamte . Es wurden Versuche unternommen, dies zu parallelisieren, aber sie waren willkürlich und schwer auszunutzen. Dies war der Hauptgrund, warum Upstart erstellt wurde.
Emporkömmling
Upstart verwendet Jobdefinitionsdateien in
/etc/init
, um zu definieren, bei welchen Ereignissen ein Dienst gestartet werden soll. Während das System bootet, verarbeitet upstart verschiedene Ereignisse und kann dann mehrere Dienste gleichzeitig starten. Auf diese Weise können sie die Ressourcen des Systems voll ausnutzen, indem sie beispielsweise 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 ausführen
ls /etc/init/*.conf
Lassen Sie mich hier einfach anhalten und sagen: Wenn Sie nicht wissen, was ein Dienst ist oder was er tut, deaktivieren Sie ihn NICHT!
Nicht alle Dienste wurden auf Upstart konvertiert. Während ich in den letzten Monaten im Serverteam von Canonical gearbeitet habe, habe ich eine Reihe von konvertierten Auftragsdateien bearbeitet. Das Schönste ist, dass man damit das gesamte Skript "magic" loswerden und einfach eine neue einfügen kann nur wenige Befehle hier und da, um genau zu definieren, wie der Dienst gestartet werden soll, und nichts weiter. Bisher wurden jedoch nur eine Handvoll traditioneller Netzwerkdienste wie Squid und Samba konvertiert.
Ist ein Dienst einsatzbereit?
Um herauszufinden, ob ein Dienst auf einem Neustart basiert, können Sie den Statusbefehl ausführen:
Wenn es sich um einen Upstart- Job handelt, wird Folgendes angezeigt:
Wenn dies nicht der Fall ist, sehen Sie etwas Ähnliches:
In diesem Fall
apache2
wurde nicht auf upstart konvertiert . Zum Deaktivieren führenapache2
Sie einfach ausDeaktivieren Sie Dienste (Jobs) im Upstart
Upstart-Jobdefinitionen haben keinen
update-rc.d
Befehl. Um den Job zu deaktivieren, müssen Sie die Jobdatei direkt bearbeiten, um sie zu deaktivieren. Hierfür gibt es zwei Möglichkeiten.Wenn Sie es dennoch manuell starten möchten, müssen Sie die
start on
Bedingung auskommentieren. Angenommen, Sie möchten Samba installieren , lassen es jedoch nicht automatisch starten. Hier ist die Jobdatei (in natty):Um Samba zu deaktivieren , können Sie einfach ein
#
vor das "start on local-filesystems
" setzen. Beachten Sie, dass es beim Booten zwar nicht wieder gestartet wird, Sie es diesmal jedoch mit beenden müssenWenn Sie jedoch niemals wollen, dass Samba startet, würde ich vorschlagen, das Paket tatsächlich zu entfernen. Wenn Sie jedoch möchten, dass es installiert, aber nicht startfähig ist, können Sie auch Folgendes tun:
Deaktivieren eines Dienstes mithilfe der Zeilengruppe "start / stop" (ab 11.04)
Beginnend mit der Version von Emporkömmling, der in 11,04 sein wird, gibt es ein neues Schlüsselwort , das die deaktiviert
start on
undstop on
Strophen:manual
. Eine andere Möglichkeit, den Dienst ab 11.04 zu deaktivieren, ist:Sie können eine
override
Datei erstellen , um einen Dienst zu deaktivieren, ohne die Jobdefinition zu bearbeiten, indem Sie einfach dasmanual
Schlüsselwort darin einfügen.quelle
echo manual >> /etc/init/<service>.override
bevorzugt wird , da es die ursprüngliche Conf Filke intakt lässt. Trotzdem ist es immer noch eine Schande, dass die Entwicklung einer solchen grundlegenden Aktivierung / Deaktivierung 3 Jahre gedauert hat, und dafür gibt es keine grafische Benutzeroberfläche./etc/init/ssh.conf
aberstatus ssh
undstatus sshd
beide sagen "Unbekannter Job". Diese Antwort scheint eine solche Möglichkeit nicht anzusprechen?status ssh
gibt mir auch "Unbekannter Job", arbeitet aberservice ssh status
für michsysv-rc-conf
Versuchen Sie es mit sysv-rc-conf
und um die Dienste zu verwalten, führen Sie aus
Welches wird interaktive Fenster wie folgt öffnen
Sie können weiter durch die Seiten navigieren, indem Sie
Ctrl+n
für die nächste Seite undCtrl+p
für die vorherige Seite verwenden. Sie können Dienste aktivieren und deaktivieren, indem Sie dieSPACE
gewünschten Runlevel auswählen .Jobs-Admin
Eine weitere Alternative wäre Jobs-Admin durch Installation über
Das bietet auch GUI davon
Um mehr Jobs anzuzeigen, müssen Sie das Kontrollkästchen Geschützte Jobs anzeigen in seinem Menü aktivieren.
chkconfig
Und dritte Option wäre chkconfig ,
Es kann über die CLI verwendet werden
chkconfig
und zeigt eine Liste der Ein / Aus-Jobs an. Wir können auch Systemdienste über anzeigenchkconfig –list
Dienste können mit eingeschaltet werden
Dienste können mit deaktiviert werden
Und wir können sogar unseren eigenen Dienst hinzufügen, indem wir ein geeignetes Init-Skript mit geeigneten Überschriften verwenden.
update-rc.d
Und eine andere Option kann hier update-rc.d genannt werden , was hier kurz erklärt wird .
Beachten Sie, dass für Ubuntu Server 12.04
update-rc.d
anstelle von chkconfig verwendet wird.quelle
Package chkconfig is not available, but is referred to by another package.
Für diejenigen von uns, die Ubuntu über ssh ausführen, ist meiner Meinung nach die beste Option
rcconf
- ein textbasiertes Programm:Navigieren Sie mit den Tabulatortasten und den Pfeiltasten und drücken Sie die Leertaste zum Aktivieren / Deaktivieren. Änderungen bleiben auch nach einem Neustart erhalten.
Screenshot aus diesem Blogpost , der ebenfalls angezeigt wird
sysv-rc-conf
- ein ähnliches Tool, mit dem Sie auch den Runlevel festlegen können. (Für diejenigen, die sich genug für Runlevel interessieren, um sie zu ändern :)Leider funktioniert rcconf nicht mit upstart (in aufgelisteten Diensten
/etc/init/*
), sondern nur mit dem traditionellen Mechanismus (ls -l /etc/init.d/*
- denjenigen, die keine symbolischen Links sind).Glücklicherweise wurden viele der Dienste, die für das Einspielen auf einen Server relevant sind (Apache, Tomcat, mdadm, boinc-client ...), noch nicht auf den Upstart verschoben.
quelle
update-rc.d
wurde sie geändert und einige ihrer veralteten Funktionen wurden entfernt . Debian-Fehler # 727735 stellt fest, dass rcconf nicht entsprechend geändert wurde. Und nein, rcconf funktioniert auch nicht mit systemd, so dass es in den letzten zehn Jahren für keines der Standard-Init-Systeme für Ubuntu Linux anwendbar war.Ich fand heraus, dass es dieses GUI-Tool gibt, das BUM ähnelt, aber mit Upstart kompatibel ist:
Jobs-Admin
quelle
Das Bearbeiten der vorhandenen Upstart-Konfigurationsdatei (wie oben beschrieben) ist keine gute Idee. Ein aktualisiertes Paket könnte eine aktualisierte Konfiguration enthalten, und Sie mussten Ihre Änderungen immer wieder wiederholen.
Wenn Sie einen Blick darauf werfen
man 5 init
, finden Sie eine geeignetere Lösung: Verwenden einer Überschreibungskonfiguration. Kurzes Beispiel: Angenommen, wir haben einen Dienst mit dem Namen "foobar", sodass eine Datei/etc/init/foobar.conf
mit 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 diestart on
/stop on
Linien Sie eine Zeile mit einem Wort platzieren:manual
. Auf diese Weise weisen Sie upstart an, grundsätzlich den zu verwendenfoobar.conf
, die Startdefinition jedoch zu überschreiben, um diesen Dienst nur dann zu starten, wenn er manuell erzwungen wird (service foobar start
in unserem Beispiel über).quelle
Es gibt auch den Boot-Up Manager .
Installieren:
sudo apt-get install bum
Weitere Infos: http://www.marzocca.net/linux/bum.html
quelle
Ich benutze Stacer. Es zeigt auch Dienste und Prozesse. Eine vollständige Toolbox für das GUI-System. https://github.com/oguzhaninan/Stacer
quelle