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.