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.
bezeichnetBei 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 werdensystemctl 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 :)