Je suppose que vous avez une framboise utilisant le raspian, qui, à ma connaissance, n'est pas encore passé à systemd. Dans ce cas, la réponse est la suivante.
EDIT : pour systemd (Jessie ou plus tard), voir en bas.
Tout d'abord, vous pouvez déterminer quel système fonctionne actuellement au moyen de la commande :
sudo service --status-all
Vous obtiendrez une liste un peu comme celle-ci :
[+] triggerhappy
[+] udev
[?] udev-mtab
[?] umountfs
[?] umountnfs.sh
[?] umountroot
[-] urandom
[+] vsftpd
[+] weewx
[-] x11-common
Les + indiquent les services qui fonctionnent, les _- les services _non qui fonctionnent, les _ ? les services qui n'autorisent pas le statut comme commande possible : il s'agit le plus souvent de commandes qui ne doivent pas fonctionner tout le temps, seulement occasionnellement.
Pour revenir à votre question, vous devez comprendre les runlevels sous Linux. Les niveaux d'exécution (0-6 + S) identifient les services qui peuvent ou doivent être exécutés. Une séquence de démarrage progresse à partir d'un niveau d'exécution initial (spécifié dans /etc/inittab, dans mon Raspberry
# The default runlevel.
id:2:initdefault:
cette ligne l'identifie comme 2, puis progresse vers votre niveau d'exécution final standard de distribution (de 2 à 5). Vous identifiez votre niveau d'exécution actuel au moyen de la commande
# runlevel
N 2
(dans mon cas, un serveur sans tête). Les autres niveaux d'exécution sont (toujours à partir de é/etc/inittab*) :
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
Un utilisateur unique (1) est souvent aussi identifié comme S.
Dans un démarrage normal, vous commencez donc à 2, et progressez jusqu'à 5. Pour trouver les services démarrés dans cette progression, lancez la commande :
# 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
Cela imprime la ligne qui commence par Default-Start dans tous les fichiers de /etc/init.d/, où sont conservés les fichiers qui identifient les différents services. La ligne en question identifie le niveau d'exécution où chaque service doit être lancé. Si un service est lancé au niveau d'exécution N, lorsque le système passe à N+1, il n'a pas besoin d'être relancé, mais s'il s'avère ne pas fonctionner, il est lancé.
Cela vous donne une idée exacte des différentes étapes auxquelles les services sont lancés. Mais au sein d'un même niveau d'exécution, les lignes Required-Start et Should-Start définissent les dépendances matérielles et logicielles pour le service en question, c'est-à-dire les services qui doivent et devraient être exécutés avant le service examiné. Sans les services Required-Start, le service en question échouera, sans les services Should-Start, il n'y aura pas d'échec général, mais peut-être seulement un manque de certaines fonctionnalités utiles. La même chose se produit à l'arrêt avec les services Required-Stop et Should-Stop.
SYSTÈME :
La commande permettant de lister tous les services est
systemctl list-unit-files
ce qui crachera beaucoup d'informations. Pour sélectionner tous les services enabled, i.e, ceux qui sont lancés au démarrage, il suffit de greffer la commande ci-dessus comme suit :
systemctl list-unit-files | grep enabled
Je préfère cette commande à systemctl list-units : la différence est que celle-ci n'affichera que les services que votre OS a en mémoire = l'OS pense en avoir besoin), alors que systemctl list-unit-files affichera tous les services installés, y compris ceux qui sont masqués (c'est-à-dire ceux qui sont censés ne jamais être démarrés, même pas manuellement), et ceux qu'elle n'activera pas, qui sont appelés static. En d'autres termes, la commande que j'ai suggérée est plus complète que celle qui ne répertorie que les services actifs.
NB : systemd est très différent des systèmes init précédents. En particulier, il n'a pas de niveaux de course, mais des cibles. Les runlevels existent toujours pour des raisons de compatibilité, et peuvent être considérés comme des cibles spécifiques en listant toutes les cibles disponibles via
systemctl list-unit-files --type=target
alors que vous pouvez voir votre cible actuelle au moyen de
$ systemctl get-default
graphical.target
Pour en savoir plus, vous pouvez lire l'excellente page d'introduction de DigitalOcean .