2014-12-15 02:59:25 +0000 2014-12-15 02:59:25 +0000
17
17

Wie kann man feststellen, welche Dienste beim Start auf dem Raspberry Pi laufen? (raspbian)

Ich habe einige Dienste, die beim Booten laufen, aber ich habe tatsächlich vergessen, wie ich sie eingerichtet habe! Wenn ich ihre Aktivität ändern möchte, wie könnte ich das tun? Vielleicht möchte ich zum Beispiel den Start eines Dienstes beim Booten deaktivieren oder ich möchte ihn mit einer anderen Methode starten.

Konkret habe ich einen openvpn-Dienst, der beim Booten erfolgreich läuft, aber einige Tutorials sagen, ich solle den Dienst der Filesharing-Programme an den vpn selbst binden, so dass, wenn der vpn ausfällt, auch der Filesharing-Dienst ausfällt. Aber ich denke, dass vielleicht die automatische Ausführung meines vpn die Dinge verkompliziert und ich sollte es deaktivieren oder die Art des Starts ändern. Aber wie kann ich das überprüfen?

Antworten (3)

23
23
23
2014-12-16 14:49:09 +0000

Ich gehe davon aus, dass Sie einen Raspberry haben, der raspian verwendet, das meines Wissens nach noch nicht auf systemd umgestiegen ist. In diesem Fall lautet die Antwort wie folgt.

EDIT: für systemd (Jessie oder später), siehe unten.

Zunächst können Sie mit dem Befehl feststellen, welches System aktuell läuft:

sudo service --status-all

Sie erhalten eine Liste in etwa wie folgt:

[+] triggerhappy
  [+] udev
  [?] udev-mtab
  [?] umountfs
  [?] umountnfs.sh
  [?] umountroot
  [-] urandom
  [+] vsftpd
  [+] weewx
  [-] x11-common

Die +‘s stehen für Dienste, die laufen, die -’s für Dienste, die nicht laufen, die ?’s für Dienste, die status als möglichen Befehl nicht zulassen: das sind meist Befehle, die nicht ständig laufen müssen, nur gelegentlich.

Um auf Ihre Frage zurückzukommen, müssen Sie runlevels in Linux verstehen. Runlevels (0-6 + S) identifizieren, welche Dienste ausgeführt werden dürfen/müssen. Eine Bootsequenz geht von einem anfänglichen Runlevel aus (angegeben in /etc/inittab, bei meinem Raspberry

# The default runlevel.
 id:2:initdefault:

diese Zeile identifiziert ihn als 2, und geht dann weiter zu Ihrem Distro-Standard-End-Runlevel (von 2 bis 5). Sie identifizieren Ihren aktuellen Runlevel mit dem Befehl

# runlevel
 N 2

(in meinem Fall ein Headless-Server). Die anderen Runlevels sind (wiederum aus é/etc/inittab*):

# Runlevel 0 is halt.
 # Runlevel 1 is single-user.
 # Runlevels 2-5 are multi-user.
 # Runlevel 6 is reboot.

Einzelbenutzer (1) wird oft auch als S bezeichnet.

In einem normalen Bootvorgang beginnen Sie also bei 2 und gehen bis 5. Um die in dieser Progression gestarteten Dienste zu finden, geben Sie den Befehl:

# grep -nrI Default-Start /etc/init.d
 umountroot:7:# Default-Start:
 checkroot.sh:8:# Default-Start: S
 kbd:6:# Default-Start: S
 isc-dhcp-server:11:# Default-Start: 2 3 4 5
 mountkernfs.sh:7:# Default-Start: S
 hostname.sh:7:# Default-Start: S
 mountnfs.sh:7:# Default-Start: S
 halt:6:# Default-Start:
 dphys-swapfile:20:# Default-Start: 2 3 4 5
 bootlogs:7:# Default-Start: 1 2 3 4 5
 rc.local:6:# Default-Start: 2 3 4 5
 hostapd:9:# Default-Start: 2 3 4 5
 keyboard-setup:8:# Default-Start: S
 lightdm:7:# Default-Start: 2 3 4 5
 procps:11:# Default-Start: S
 mysql:9:# Default-Start: 2 3 4 5
 single:6:# Default-Start: 1
 vsftpd:7:# Default-Start: 2 3 4 5
 samba:7:# Default-Start: 2 3 4 5
 mountall.sh:6:# Default-Start: S
 weewx:20:# Default-Start: 2 3 4 5
 umountnfs.sh:7:# Default-Start:
 triggerhappy:6:# Default-Start: 2 3 4 5
 ifplugd:24:# Default-Start: 2 3 4 5
 alsa-utils:9:# Default-Start: S
 bootmisc.sh:7:# Default-Start: S
 sendsigs:6:# Default-Start:
 console-setup:7:# Default-Start: S
 nfs-common:7:# Default-Start: 2 3 4 5 S
 checkroot-bootclean.sh:6:# Default-Start: S
 rsyslog:7:# Default-Start: 2 3 4 5
 x11-common:7:# Default-Start: S
 mountdevsubfs.sh:7:# Default-Start: S
 cron:10:# Default-Start: 2 3 4 5
 mountnfs-bootclean.sh:6:# Default-Start: S
 mountall-bootclean.sh:6:# Default-Start: S
 screen-cleanup:11:# Default-Start: S
 udev:6:# Default-Start: S
 ssh:7:# Default-Start: 2 3 4 5
 haveged:8:# Default-Start: 2 3 4 5
 hwclock.sh:26:# Default-Start: S
 plymouth:9:# Default-Start: 2 3 4 5
 motd:7:# Default-Start: 1 2 3 4 5
 killprocs:6:# Default-Start: 1
 networking:6:# Default-Start: S
 fake-hwclock:9:# Default-Start: S
 udev-mtab:6:# Default-Start: S
 apache2:6:# Default-Start: 2 3 4 5
 reboot:6:# Default-Start:
 umountfs:6:# Default-Start:
 plymouth-log:9:# Default-Start: S
 openvpn:11:# Default-Start: 2 3 4 5
 kmod:8:# Default-Start: S
 ntp:7:# Default-Start: 2 3 4 5
 rpcbind:9:# Default-Start: S 2 3 4 5
 urandom:6:# Default-Start: S
 rmnologin:6:# Default-Start: 2 3 4 5
 checkfs.sh:7:# Default-Start: S
 sudo:8:# Default-Start: 2 3 4 5
 mtab.sh:6:# Default-Start: S
 dbus:6:# Default-Start: 2 3 4 5
 rsync:8:# Default-Start: 2 3 4 5

Dies gibt die Zeile aus, die mit Default-Start in allen Dateien in /etc/init.d/ beginnt, wo die Dateien, die die verschiedenen Dienste identifizieren, gespeichert sind. Die betreffende Zeile gibt den Runlevel an, in dem der jeweilige Dienst gestartet werden soll. Wenn ein Dienst im Runlevel N gestartet wurde, muss er nicht erneut gestartet werden, wenn das System auf N+1 wechselt, aber wenn er nicht läuft, wird er gestartet.

Dies gibt Ihnen eine genaue Vorstellung von den verschiedenen Stufen, in denen Dienste gestartet werden. Aber innerhalb desselben Runlevels definieren die Zeilen Required-Start und Should-Start harte und weiche Abhängigkeiten für den betreffenden Dienst, d.h. Dienste, die müssen und sollten vor dem untersuchten Dienst laufen. Ohne die Required-Start-Dienste wird der betreffende Dienst fehlschlagen, ohne die Should-Start-Dienste hingegen gibt es keinen generellen Ausfall, möglicherweise nur das Fehlen einiger nützlicher Funktionen. Das Gleiche geschieht beim Stoppen mit Required-Stop und Should-Stop.

SYSTEMD :

Der Befehl zum Auflisten aller Dienste ist

systemctl list-unit-files

, der viele Informationen ausspuckt. Um alle Dienste auszuwählen, die aktiviert sind, d. h. die beim Booten gestartet werden, geben Sie einfach den obigen Befehl wie folgt ein:

systemctl list-unit-files | grep enabled

Ich ziehe diesen Befehl dem Befehl systemctl list-units vor: der Unterschied ist, dass dieser nur die Dienste anzeigt, die Ihr Betriebssystem im Speicher hat = das Betriebssystem denkt, dass es sie braucht), während systemctl list-unit-files alle installierten Dienste anzeigt, einschließlich derer, die maskiert sind (d.h. diejenigen, die niemals gestartet werden sollen, auch nicht manuell), und derer, die es nicht aktiviert, die static genannt werden. Mit anderen Worten: Der von mir vorgeschlagene Befehl ist umfassender als der, der nur aktive Dienste auflistet.

NB : systemd unterscheidet sich sehr von früheren Init-Systemen. Insbesondere hat es keine Runlevels, sondern Ziele. runlevels gibt es aus Kompatibilitätsgründen immer noch, und man kann sie als spezifische Ziele sehen, indem man alle verfügbaren Ziele über

systemctl list-unit-files --type=target

auflistet, während man sein aktuelles Ziel über

$ systemctl get-default
  graphical.target

sehen kann. Für mehr darüber können Sie DigitalOceans ausgezeichnete Einführungsseite lesen.

8
8
8
2015-04-09 19:26:26 +0000

Für die einfache Verwaltung von Startup-Diensten auf dem Raspberry Pi empfehle ich das Tool rcconf. Es ermöglicht Ihnen das einfache Ein- und Ausschalten von Diensten in /etc/init.d/. Sie können auch sehen, ob sie aktiviert sind und beim Starten ausgeführt werden.

Um das Tool zu installieren

sudo apt-get install rcconf

Und es ist sehr einfach, es mit der Text-UI zu verwenden

sudo rcconf
3
3
3
2014-12-15 11:09:00 +0000
sudo nano /etc/rc.local

Hier können Sie eine Batch-Datei oder Befehle einfügen, die beim Booten ausgeführt werden sollen. Ich lasse auch Openvpn beim Booten automatisch laufen :)