Wie kann man feststellen, welche Dienste beim Start von Raspberry Pi ausgeführt werden? (Himbeer)

17

Ich habe einige Dienste, die beim Booten ausgeführt werden, 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? Zum Beispiel möchte ich vielleicht einen Dienst daran hindern, beim Booten zu starten, oder ich möchte ihn mit einer anderen Methode starten.

Insbesondere habe ich einen openvpn-Dienst, der beim Booten erfolgreich ausgeführt wird, aber einige Tutorials sagen, ich sollte den Dienst von Filesharing-Programmen an den vpn selbst binden, damit der Filesharing-Dienst auch dann ausfällt, wenn der vpn ausfällt. Aber ich denke, dass die automatische Ausführung meines VPN die Dinge kompliziert und ich sollte es deaktivieren oder die Art und Weise ändern, wie es gestartet wird. Aber wie überprüfe ich?

user1502186
quelle

Antworten:

23

Ich gehe davon aus, dass Sie eine Himbeere mit Himbeer haben, die meines Wissens noch nicht zu systemd übergegangen ist . In diesem Fall lautet die Antwort wie folgt.

EDIT: für systemd (Jessie oder neuer) siehe unten .

Zunächst können Sie mit dem folgenden Befehl feststellen, welches System gerade ausgeführt wird:

  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 zeigen Dienste laufen, die -'s Dienste nicht ausgeführt wird , die ?‘ S Dienstleistungen , die nicht zulassen Status als möglicher Befehl: sie sind meist Befehle, die nicht brauchen die ganze Zeit zu laufen, nur gelegentlich.

Um zu Ihrer Frage zurückzukehren, müssen Sie Runlevel unter Linux verstehen . Runlevel (0-6 + S) geben an, welche Dienste ausgeführt werden dürfen / müssen. Eine Startsequenz beginnt mit einem anfänglichen Runlevel (angegeben in / etc / inittab in meiner Himbeere)

 # The default runlevel.
 id:2:initdefault:

Diese Zeile kennzeichnet es als 2 und geht dann zu Ihrem Distro-Standard-Runlevel über (von 2 bis 5). Sie identifizieren Ihren aktuellen Runlevel mit dem Befehl

 # runlevel
 N 2

(in meinem Fall ein kopfloser Server). Die anderen Runlevel sind (wieder 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 häufig auch als S identifiziert.

In einem normalen Systemstart beginnen Sie mit 2 und fahren mit 5 fort. Um die in diesem Verlauf gestarteten Dienste zu finden, geben Sie den folgenden Befehl ein:

 # 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 in allen Dateien in /etc/init.d/ mit Default-Start beginnt. In dieser Zeile werden die Dateien gespeichert, die die verschiedenen Dienste identifizieren. Die betreffende Zeile gibt den Runlevel an, auf dem die einzelnen Dienste gestartet werden sollen. Wenn ein Dienst auf Runlevel N gestartet wird und das System auf N + 1 voranschreitet, muss er nicht erneut gestartet werden. Wenn jedoch festgestellt wird, dass er nicht ausgeführt wird, wird er gestartet.

Auf diese Weise erhalten Sie eine genaue Vorstellung von den verschiedenen Phasen, in denen die Dienste gestartet werden. Innerhalb desselben Runlevels definieren die Zeilen Required-Start und Should-Start harte und weiche Abhängigkeiten für den betreffenden Dienst, dh Dienste, die ausgeführt werden müssen und ausgeführt werden sollen , bevor der Dienst untersucht wird. Ohne die Required-Start-Dienste schlägt der betreffende Dienst fehl. Ohne die Should-Start-Dienste tritt kein allgemeiner Fehler auf, möglicherweise nur das Fehlen einiger nützlicher Funktionen. Das gleiche passiert beim Stopp mit Required-Stop und Should-Stop.

SYSTEMD :

Der Befehl zum Auflisten aller Dienste lautet

systemctl list-unit-files

das wird viel info ausspucken. Um alle aktivierten Dienste auszuwählen , dh diejenigen, die beim Booten gestartet werden, führen Sie einfach den obigen Befehl wie folgt aus:

 systemctl list-unit-files | grep enabled 

Ich bevorzuge diesen Befehl gegenüber systemctl list-units : Der Unterschied ist, dass dieser Befehl nur Dienste anzeigt, die Ihr Betriebssystem im Speicher hat (das Betriebssystem denkt, dass es benötigt wird), während systemctl list-unit-files alle installierten Dienste anzeigen , einschließlich derjenigen, die installiert sind maskiert ( dh solche, die nicht gestartet werden sollen, auch nicht manuell) und solche, die nicht aktiviert werden, die als statisch bezeichnet werden . Mit anderen Worten, der von mir vorgeschlagene Befehl ist umfassender als der, in dem nur aktive Dienste aufgeführt sind.

Anmerkung : systemd unterscheidet sich stark von früheren init-Systemen. Insbesondere hat es keine Runlevel , sondern Ziele . Runlevel existieren aus Kompatibilitätsgründen immer noch und können als spezifische Ziele angesehen werden, indem alle verfügbaren Ziele über aufgelistet werden

systemctl list-unit-files --type=target

während Sie Ihr aktuelles Ziel mit sehen können

$ systemctl get-default
  graphical.target

Weitere Informationen hierzu finden Sie auf der ausgezeichneten Einführungsseite von DigitalOcean .

MariusMatutiae
quelle
Raspbian Jessie verwendet systemd, aber diese Antwort scheint immer noch zu funktionieren.
ZX9
1
@ ZX9 Danke, dass du mich auf diesen alten Beitrag aufmerksam gemacht hast. Ich habe eine Bearbeitung für systemd hinzugefügt .
MariusMatutiae
8

Für ein einfaches Startup Service Management auf Raspberry Pi empfehle ich Tool rcconf. Hiermit können Sie Dienste einfach ein- und ausschalten /etc/init.d/. Sie können auch sehen, ob sie aktiviert sind und beim Start ausgeführt werden.

So installieren Sie das Tool

sudo apt-get install rcconf

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

sudo rcconf
jjurm
quelle
Dies antwortet nicht auf die OP, die lautete (und ich zitiere): Wie kann man feststellen, welche Dienste beim Start auf Raspberry Pi ausgeführt werden? (Himbeer) .
MariusMatutiae
@MariusMatutiae Gibt an, rcconfob ein Dienst aktiviert ist oder nicht. Ich habe die Antwort so bearbeitet, dass ausdrücklich darauf hingewiesen wird, dass das Tool diese Art von Informationen anzeigt.
9.
3
sudo nano /etc/rc.local

Hier fügen Sie eine Batch-Datei oder Befehle ein, die beim Booten ausgeführt werden sollen. Ich starte Openvpn automatisch beim Booten :)

Hexark
quelle