Raspberry Pi: Dienste starten, stoppen, neustarten, aktivieren und deaktivieren
Mit Raspbian Jessie geprüft.
Die Standard-Linux-Distribution ist Raspbian. Wenn man einen Raspberry Pi damit nicht als Desktop-Ersatz, sondern eher als Server betreibt, dann hat man es auf der Kommandozeile mit Diensten, Services und Daemons zu tun.
Das Wort "Daemon" leitet sich von "D"isk "a"nd "Execution "Mon"itor ab und bezeichnet Dienstprogramme, die beim Systemstart oder später gestartet werden und im Hintergrund ihre Arbeit verrichten. Ein Daemon ist also ein Dienst oder Service.
Dienste werden mit speziellen Kommandos gesteuert. Es gibt auch die Möglichkeit Dienste automatisch beim Systemstart mitstarten zu lassen und diese Funktionalität auch wieder auszuschalten. Außerdem gibt es Kommandos, die Auskunft über einen Dienst geben. Zum Beispiel ob er läuft oder automatisch gestartet wird.
Wir nehmen hier exemplarisch den Dienst SSH (ssh), der in der Regel läuft und an dem man die verschiedenen Kommandos ausprobieren kann. Natürlich nur, wenn man nicht per SSH am Raspberry Pi angemeldet ist.
Bei diesen Kommandos muss man zwischen Raspbian Wheezy und Raspbian Jessie unterscheiden. Hier gab es einen Wechsel des Init-Systems von "Sys-V-Init" auf "systemd". Die alten Kommandos von Raspbian Wheezy funktionieren in der Regel auch unter Raspbian Jessie, aber nicht umgekehrt. Unter "systemd" sollte man sich schon an die neuen Kommandos gewöhnen.
Aufgabe
- Dienste manuell starten, stoppen und neustarten mit Sys-V-Init (Raspbian Wheezy)
- Dienste manuell starten, stoppen und neustarten mit systemd (Raspbian Jessie)
- Dienste automatisch beim Booten starten oder deaktivieren (rcconf).
Lösung: Dienste manuell starten, stoppen und neustarten mit Sys-V-Init (Raspbian Wheezy)
Status eines Dienstes abfragen (ohne Root-Rechte):
service ssh status
Ausführlicher Status zum Dienst abfragen (mit Root-Rechten):
sudo service ssh status
Dienst starten:
sudo service ssh start
Laufenden Dienst stoppen:
sudo service ssh stop
Hinweis: Das Stoppen eines Dienstes in den Runlevels entfernt einen Dienst nicht dauerhaft. Im Gegenteil, ein Dienst, der gestoppt, aber nicht entfernt wird, wartet nur darauf gestartet zu werden. Das kann bei der Aktualisierung des Pakets erfolgen. Oder ganz einfach bei einem Neustart.
Um einen Dienst tatsächlich zu deaktivieren, besteht darin, den Dienst in den Runleveln zu deaktivieren oder das entsprechende Paket über "apt-get remove" zu entfernen.
Laufenden Dienst neustarten (dabei werden bestehende Verbindungen mit dem Dienst getrennt):
sudo service ssh restart
Die Konfiguration neu laden (dabei werden bestehende Verbindungen NICHT getrennt):
sudo service ssh reload
Die Konfiguration neu laden und dabei bestehende Verbindungen trennen:
sudo service ssh force-reload
Unter Raspbian Wheezy verwendet man "update-rc.d", um Dienste in den einzelnen Runleveln zu aktivieren und zu deaktivieren.
In der Regel werden Dienste bei der Installation automatisch gestartet und in den richtigen Runlevel eingetragen. Es kann aber sein, dass man den Dienst vorübergehend außer Betrieb genommen hat und jetzt wieder aktivieren möchte.
Wenn man einen deaktivierten Dienst beim Booten automatisch gestartet haben möchte, kann man mit folgendem Kommando die Links zum Start-/Stop-Script anlegen.
Dienst soll in Zukunft automatisch starten:
sudo update-rc.d ssh defaults
Dienst soll in Zukunft NICHT mehr automatisch starten. Hierbei werden die Links zum Start-/Stop-Script aus den Runlevels gelöscht.
sudo update-rc.d -f ssh remove
Lösung: Dienste manuell starten, stoppen und neustarten mit "systemd" (ab Raspbian Jessie)
Beim Wechsel von Raspbian Wheezy auf Raspbian Jessie gab es einen Wechsel des Init-Systems von "Sys-V-Init" auf "systemd". Die alten Kommandos von Raspbian Wheezy funktionieren in der Regel auch unter Raspbian Jessie, aber nicht umgekehrt. Unter "systemd" sollte man sich schon an die neuen Kommandos gewöhnen.
Status aller systemd-Units anzeigen:
systemctl
Systemd-Units können auf .service, .socket, .target, .timer, .mount, .automount, .device oder .path enden. Wird kein Unit-Typ angehängt, dann wird standardmäßig der Typ ".service" angenommen.
systemctl status UNIT.service
Beispiel mit dem Dienst SSH:
systemctl status ssh.service
Status zum Dienst anzeigen:
systemctl status ssh
Ausführlicheren Status zum Dienst anzeigen:
sudo systemctl status ssh
Sehr ausführlichen Status zum Dienst anzeigen:
sudo systemctl show ssh
Dienst starten:
sudo systemctl start ssh
Laufenden Dienst stoppen:
sudo systemctl stop ssh
Einen Dienst SOFORT beenden:
sudo systemctl kill ssh
Dienst soll in Zukunft automatisch starten:
sudo systemctl enable ssh
Dienst soll in Zukunft NICHT mehr automatisch starten:
sudo systemctl disable ssh
Gibt aus, ob der Dienst automatisch gestartet wird:
systemctl is-enabled ssh
Systemd-Unit anzeigen:
systemctl cat ssh.service
Bedeutung des Dienst-Status
SSH ist gestartet und wird automatisch gestartet
Loaded: loaded (/lib/systemd/system/ssh.service; enabled) Active: active (running) ...
SSH ist gestoppt und wird automatisch gestartet
Loaded: loaded (/lib/systemd/system/ssh.service; enabled) Active: inactive (dead)
SSH ist gestartet, wird aber nicht automatisch gestartet
Loaded: loaded (/lib/systemd/system/ssh.service; disabled) Active: active (running) ...
SSH ist gestoppt und wird auch nicht automatisch gestartet
Loaded: loaded (/lib/systemd/system/ssh.service; disabled) Active: inactive (dead)
Hinweise
Auf einer frisch installierten Linux-Distribution, insbesondere Raspbian, laufen nicht wirklich unnütze Dienste. Man sollte also nicht unüberlegt irgendwelche Dienste abschalten, die sich später dann doch als wichtig herausstellen und nur dazu führen, dass das System unbenutzbar wird. Vor dem Deaktivieren sollte man sich genau informieren, welche Auswirkungen das Deaktivieren haben könnte und ob es wirklich sinnvoll ist.
Beispiel: Wie man einen Dienst dauerhaft entfernt
Am Beispiel des Swap-Dienstes, der sich einfach entfernen und auch wieder herstellen lässt, ohne dass man ein laufendes System in Gefahr bringt, kann das entfernen eines Dienstes nachvollzogen werden.
Weitere verwandte Themen:
- Betriebssystem und Software des Raspberry Pi aktualisieren
- Sicherheitsaktualisierungen automatisch herunterladen und installieren
- Erste Schritte bei der Installation und Konfiguration eines Raspberry Pi
- Raspberry Pi: Richtig ausschalten und neustarten
Teilen:
Produktempfehlungen
Elektronik-Set Raspberry Pi Edition
Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero
- Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
- Experimentieren und Programmieren ohne Vorkenntnisse
- Sofort Loslegen mit All-in-one-Set
Elektronik-Fibel
Elektronik einfach und leicht verständlich
Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.