Presumo che tu abbia un Raspberry che usa raspian, che, per quanto ne so, non è ancora passato a systemd. In questo caso, la risposta è la seguente.
EDIT: per systemd (Jessie o successivo), vedi in fondo.
Per prima cosa, potete determinare quale sistema è attualmente in esecuzione per mezzo del comando:
sudo service --status-all
Otterrete una lista più o meno come questa:
[+] triggerhappy
[+] udev
[?] udev-mtab
[?] umountfs
[?] umountnfs.sh
[?] umountroot
[-] urandom
[+] vsftpd
[+] weewx
[-] x11-common
I +‘s indicano servizi in esecuzione, i -’s servizi non in esecuzione, i ?’s servizi che non permettono status come possibile comando: sono per lo più comandi che non devono essere eseguiti sempre, solo occasionalmente.
Per tornare alla tua domanda, devi capire runlevels in Linux. I runlevel (0-6 + S) identificano quali servizi possono/devono essere eseguiti. Una sequenza di avvio progredisce da un runlevel iniziale (specificato in /etc/inittab, nel mio Raspberry
# The default runlevel.
id:2:initdefault:
questa linea lo identifica come 2, e poi progredisce al runlevel finale standard della tua distro (da 2 a 5). Identificate il vostro runlevel attuale con il comando
# runlevel
N 2
(nel mio caso, un server headless). Gli altri runlevel sono (sempre da é/etc/inittab*):
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
Single user (1) è spesso identificato anche come S.
In un avvio normale, quindi si parte da 2, e si avanza fino a 5. Per trovare i servizi avviati in questa progressione, date il comando
# 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
Questo stampa la linea che inizia con Default-Start in tutti i file in /etc/init.d/, che è dove sono tenuti i file che identificano i vari servizi. La linea in questione identifica il runlevel in cui ogni servizio deve essere avviato. Se un servizio è avviato al runlevel N, quando il sistema passa a N+1 non ha bisogno di essere avviato di nuovo, ma se si trova non in esecuzione viene avviato.
Questo vi dà un'idea esatta dei diversi stadi in cui i servizi vengono avviati. Ma all'interno dello stesso runlevel, le linee Required-Start e Should-Start definiscono le dipendenze hard e soft per il servizio in questione, i.e. servizi che devono essere avviati e dovrebbero essere avviati prima del servizio in esame. Senza i servizi Required-Start, il servizio in questione fallirà, senza i servizi Should-Start invece non ci sarà un fallimento generale, forse solo la mancanza di alcune caratteristiche utili. Lo stesso avviene allo stop con Required-Stop e Should-Stop.
SYSTEMD :
Il comando per elencare tutti i servizi è
systemctl list-unit-files
che sputerà fuori molte informazioni. Per selezionare tutti i servizi abilitati, i.e, quelli che vengono avviati all'avvio, basta unire il comando di cui sopra come segue:
systemctl list-unit-files | grep enabled
Preferisco questo comando a systemctl list-units: la differenza è che questo mostrerà solo i servizi che il vostro sistema operativo ha in memoria (il sistema operativo pensa di averne bisogno), mentre systemctl list-unit-files mostrerà tutti i servizi installati, compresi quelli che sono mascherati (i.e. quelli che non dovrebbero mai essere avviati, nemmeno manualmente), e quelli che non verranno attivati, che sono chiamati statici. In altre parole, il comando che ho suggerito è più completo di quello che elenca solo i servizi attivi.
NB : systemd è molto diverso dai precedenti sistemi di init. In particolare, non ha runlevels, ma targets. I runlevels esistono ancora per ragioni di compatibilità, e possono essere visti come obiettivi specifici elencando tutti gli obiettivi disponibili tramite
systemctl list-unit-files --type=target
mentre potete vedere il vostro obiettivo attuale tramite
$ systemctl get-default
graphical.target
Per saperne di più, potete leggere l'eccellente pagina introduttiva di DigitalOcean .