Ik ga ervan uit dat je een Raspberry hebt die raspian gebruikt, die, voor zover ik weet, nog niet is overgestapt op systemd. In dat geval is het antwoord als volgt.
EDIT: voor systemd (Jessie of later), zie onderaan.
Eerst kunt u bepalen welk systeem op dit moment draait, door middel van het commando:
sudo service --status-all
Je krijgt dan een lijst die er ongeveer zo uitziet:
[+] triggerhappy
[+] udev
[?] udev-mtab
[?] umountfs
[?] umountnfs.sh
[?] umountroot
[-] urandom
[+] vsftpd
[+] weewx
[-] x11-common
De +‘s geven services aan die draaien, de -’s services niet draaien, de ?’s services die status niet als mogelijk commando toelaten: het zijn meestal commando’s die niet altijd hoeven te draaien, slechts af en toe.
Om terug te komen op je vraag, je moet runlevels in Linux begrijpen. Runlevels (0-6 + S) geven aan welke services gedraaid mogen/moeten worden. Een boot sequentie gaat van een initieel runlevel (gespecificeerd in /etc/inittab, in mijn Raspberry
# The default runlevel.
id:2:initdefault:
deze regel identificeert het als 2, en gaat dan verder naar je distro standaard laatste runlevel (van 2 tot 5). Je identificeert je huidige runlevel door middel van het commando
# runlevel
N 2
(in mijn geval, een headless server). De andere runlevels zijn (wederom uit é/etc/inittab*):
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
Single user (1) wordt vaak ook aangeduid als S.
In een normale boot, dus je begint bij 2, en loopt op tot 5. Om de services te vinden die in deze progressie gestart zijn, geef je het commando:
# 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
Dit drukt de regel af die begint met Default-Start in alle bestanden in /etc/init.d/, waar de bestanden staan die de verschillende services identificeren. De regel in kwestie identificeert het runlevel waar elke dienst gestart moet worden. Als een dienst gestart is op runlevel N, hoeft deze, als het systeem doorgaat naar N+1, niet opnieuw gestart te worden, maar als hij niet draaiend gevonden wordt, wordt hij wel gestart.
Dit geeft je een exact idee van de verschillende stadia waarin services worden gestart. Maar binnen hetzelfde runlevel definiëren de regels Required-Start en Should-Start harde en zachte afhankelijkheden voor de dienst in kwestie, _dus _ diensten die moeten draaien en moeten draaien voor de dienst die wordt onderzocht. Zonder de Required-Start services zal de service in kwestie falen, zonder de Should-Start services in plaats daarvan zal er geen algehele mislukking zijn, mogelijk alleen het ontbreken van enkele nuttige functies. Hetzelfde gebeurt bij stoppen met Required-Stop en Should-Stop.
SYSTEMD :
Het commando om alle services op te sommen is
systemctl list-unit-files
wat veel info zal spugen. Om alle services enabled te selecteren, _d.w.z. degene die bij het opstarten worden gestart, hoeft u alleen maar het bovenstaande commando als volgt te grep'en:
systemctl list-unit-files | grep enabled
Ik geef de voorkeur aan dit commando boven systemctl list-units: het verschil is dat dit commando alleen services weergeeft die je OS in het geheugen heeft (het OS denkt dat het die nodig heeft), terwijl systemctl list-unit-files alle geïnstalleerde services weergeeft, inclusief die services die gemaskeerd zijn (d.w.z. die nooit mogen worden gestart, zelfs niet handmatig), en die services die het niet zal activeren, die statisch worden genoemd. Met andere woorden, het commando dat ik voorstelde is uitgebreider dan het commando dat alleen actieve services opsomt.
NB : systemd is heel anders dan vorige init systemen. In het bijzonder heeft het geen runlevels, maar targets. runlevels bestaan nog steeds om compatibiliteitsredenen, en kunnen worden gezien als specifieke targets door alle beschikbare targets op te sommen via
systemctl list-unit-files --type=target
terwijl je je huidige target kunt zien door middel van
$ systemctl get-default
graphical.target
Voor meer hierover, kun je DigitalOcean’s uitstekende introductiepagina lezen.