Je suppose que vous avez un Raspberry utilisant 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), voir en bas de page .
Tout d'abord, vous pouvez déterminer quel système est actuellement en cours d'exécution au moyen de la commande :
sudo service --status-all
Vous obtiendrez une liste semblable à celle-ci :
[ + ] triggerhappy
[ + ] udev
[ ? ] udev-mtab
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ - ] urandom
[ + ] vsftpd
[ + ] weewx
[ - ] x11-common
El +'s indiquent les services en cours d'exécution, le -'s services pas en cours, le ?'s les services qui ne permettent pas statut comme commande possible : ce sont principalement des commandes qui n'ont pas besoin d'être exécutées tout le temps, juste occasionnellement.
Pour en revenir à votre question, vous devez comprendre niveau d'exécution sous Linux. Les niveaux d'exécution (0-6 + S) identifient les services qui peuvent/doivent être exécutés. Une séquence de démarrage progresse à partir d'un niveau d'exécution initial (spécifié dans le champ /etc/inittab dans ma framboise
# The default runlevel.
id:2:initdefault:
cette ligne l'identifie comme 2, et progresse ensuite vers le niveau d'exécution final standard de votre distro (de 2 à 5). Vous identifiez votre niveau d'exécution actuel au moyen de la commande
# runlevel
N 2
(dans mon cas, un serveur headless). Les autres niveaux d'exécution sont (toujours d'après é/etc/inittab*) :
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
L'utilisateur unique (1) est souvent aussi identifié comme S.
Dans un démarrage normal, on commence donc à 2, et on progresse 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 Démarrage par défaut dans tous les fichiers de /etc/init.d/ C'est là que 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 démarré au niveau d'exécution N, lorsque le système passe à N+1, il n'a pas besoin d'être redémarré, mais s'il n'est pas en cours d'exécution, il est démarré.
Cela vous donne une idée exacte des différents stades auxquels 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 dures et douces pour le service en question, c'est-à-dire des services qui doit courir et devrait exécuté 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, peut-être juste l'absence de certaines fonctionnalités utiles. La même chose se produit lors de l'arrêt avec Required-Stop et Should-Stop.
SYSTEMD :
La commande pour lister tous les services est
systemctl list-unit-files
qui vous fournira de nombreuses informations. Pour sélectionner tous les services activé , i.e ceux qui sont lancés au démarrage, il suffit de lire 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 celui-ci n'affichera que les services que votre OS a en mémoire = l'OS pense qu'il en a besoin), alors que systemctl list-unit-files affichera tous les services installés, y compris ceux qui sont masqué ( c'est-à-dire ceux qui sont censés ne jamais être démarrés, même manuellement), et ceux qu'il va pas activer, qui sont appelés static . En d'autres termes, la commande que j'ai suggérée est plus complète que celle qui énumère seulement actif services.
NB Systemd est très différent des systèmes d'initialisation précédents. En particulier, il n'a pas niveaux de fonctionnement mais cibles . niveaux de fonctionnement existent toujours pour des raisons de compatibilité, et peuvent être vues 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 .