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

  1. Dienste manuell starten, stoppen und neustarten mit Sys-V-Init (Raspbian Wheezy)
  2. Dienste manuell starten, stoppen und neustarten mit systemd (Raspbian Jessie)
  3. 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:

Frag Elektronik-Kompendium.de

Elektronik-Set Raspberry Pi Edition
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-Set jetzt bestellen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!