GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich feststellen, welche Dienste beim Start auf dem Raspberry Pi ausgeführt werden? (Raspbian)

Ich nehme an, Sie haben einen Raspberry mit Raspian, der meines Wissens nach noch nicht auf systemd umgezogen ist . In diesem Fall lautet die Antwort wie folgt.

EDIT:für systemd (Jessie oder höher), siehe unten .

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

  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 laufende Dienste an, die -'s Dienste nicht laufen, die ?'s Dienste, die keinen Status zulassen als möglicher Befehl:Es handelt sich meistens um Befehle, die nicht ständig ausgeführt werden müssen, sondern nur gelegentlich.

Um auf Ihre Frage zurückzukommen, Sie müssen Runlevel verstehen s unter Linux. Runlevel (0-6 + S) geben an, welche Dienste ausgeführt werden dürfen/müssen. Eine Boot-Sequenz geht von einem anfänglichen Runlevel aus (angegeben in /etc/inittab , in meiner Himbeere

 # The default runlevel.
 id:2:initdefault:

Diese Zeile identifiziert es als 2 und fährt dann mit dem finalen Runlevel Ihres Distributionsstandards fort (von 2 bis 5). Ihren aktuellen Runlevel ermitteln Sie mit dem Befehl

 # runlevel
 N 2

(in meinem Fall ein Headless-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.

Single User (1) wird oft auch als S.

bezeichnet

Bei einem normalen Start beginnen Sie also bei 2 und fahren bis zu 5 fort. Um die in dieser Reihe gestarteten Dienste zu finden, geben Sie den 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 mit Default-Start beginnt in allen Dateien in /etc/init.d/ , wo die Dateien aufbewahrt werden, die die verschiedenen Dienste identifizieren. Die betreffende Zeile identifiziert den Runlevel, in dem jeder Dienst gestartet werden soll. Wenn ein Dienst auf Runlevel N gestartet wird und das System zu N+1 fortschreitet, muss er nicht erneut gestartet werden, aber wenn festgestellt wird, dass er nicht läuft, wird er gestartet.

Dadurch erhalten Sie eine genaue Vorstellung von den verschiedenen Phasen, 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 laufen und sollten vor dem untersuchten Dienst ausführen. Ohne die Required-Start-Dienste schlägt der betreffende Dienst fehl, ohne die Should-Start-Dienste gibt es stattdessen keinen allgemeinen Ausfall, möglicherweise nur das Fehlen einiger nützlicher Funktionen. Dasselbe passiert beim Stop mit Required-Stop und Should-Stop.

SYSTEMD :

Der Befehl zum Auflisten aller Dienste lautet

systemctl list-unit-files

die viele Infos ausspuckt. Um alle Dienste aktiviert auszuwählen , d.h. , die beim Booten gestartet werden, grep einfach den obigen Befehl wie folgt:

 systemctl list-unit-files | grep enabled 

Ich bevorzuge diesen Befehl gegenüber systemctl list-units :Der Unterschied besteht darin, dass dieser nur Dienste anzeigt, die Ihr Betriebssystem im Speicher hat =das Betriebssystem denkt, dass es benötigt wird), während systemctl list-unit-files zeigt alle an installierte Dienste, einschließlich solcher, die maskiert sind (d.h. diejenigen, die niemals gestartet werden sollen, nicht einmal manuell), und diejenigen, die nicht werden aktivieren, die statisch genannt werden . Mit anderen Worten, der von mir vorgeschlagene Befehl ist umfassender als der, der nur aktiv auflistet Dienstleistungen.

NB :systemd unterscheidet sich stark von früheren Init-Systemen. Insbesondere hat es keine Runlevels , sondern Ziele . Runlevel sind aus Kompatibilitätsgründen noch vorhanden 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 hervorragenden Einführungsseite von DigitalOcean.


Für eine einfache Startdienstverwaltung auf dem Raspberry Pi empfehle ich das Tool rcconf . Damit können Sie Dienste in /etc/init.d/ einfach ein- und ausschalten . 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 der Text-Benutzeroberfläche zu verwenden

sudo rcconf

sudo nano /etc/rc.local

Hier fügen Sie Batch-Dateien oder Befehle ein, die beim Booten ausgeführt werden sollen. Ich führe Openvpn auch automatisch beim Booten aus :)


Linux
  1. Wie kann man Cron sagen, dass er jeden zweiten Tag (ungerade/gerade) einen Befehl ausführen soll?

  2. CentOS / RHEL :Wie finde ich heraus, welcher Benutzer einen bestimmten Befehl ausführt?

  3. So führen Sie DNS- und FTP-Dienste in einem Chroot-Gefängnis aus

  4. So führen Sie ein Shell-Skript beim Start aus

  5. Wie führe ich sbt als Daemon aus?

So listen Sie Startdienste beim Booten in Linux auf

So führen Sie Pods als systemd-Dienste mit Podman aus

So installieren Sie Raspbian OS auf Raspberry Pi

So installieren Sie das Raspbian-Betriebssystem von Raspberry Pi mit Pixel Desktop auf jedem Computer

So führen Sie ein Bash-Skript aus

Wie kann man Xargs sagen, welches Argument es wählen soll?