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 version ultérieure), voir en bas .
Tout d'abord, vous pouvez déterminer quel système est actuellement en cours d'exécution à l'aide de la commande:
sudo service --status-all
Vous obtiendrez une liste un peu comme ceci:
[ + ] triggerhappy
[ + ] udev
[ ? ] udev-mtab
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ - ] urandom
[ + ] vsftpd
[ + ] weewx
[ - ] x11-common
Les + « s indiquent les services en cours d' exécution, les -Bois services ne en cours d' exécution, les ? » S des services qui ne permettent pas le statut comme une commande possible: ils sont pour la plupart des commandes qui ne ont pas besoin de courir tout le temps, juste de temps en temps.
Pour revenir à votre question, vous devez comprendre les niveaux 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 / 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 à l'aide 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.
L'utilisateur unique (1) est souvent également 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
Ceci 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 démarré. Si un service est démarré au niveau d'exécution N, lorsque le système progresse vers N + 1, il n'a pas besoin d'être redémarré, mais s'il s'est avéré ne pas fonctionner, il est démarré.
Cela vous donne une idée exacte des différentes étapes de démarrage des services. Mais au sein du 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 s'exécuter et doivent s'exécuter 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 simplement le manque de fonctionnalités utiles. La même chose se produit à l'arrêt avec Required-Stop et Should-Stop.
SYSTEMD :
La commande pour répertorier tous les services est
systemctl list-unit-files
ce qui crachera beaucoup d'informations. Pour sélectionner tous les services activés , c'est -à- dire ceux qui sont démarrés au démarrage, grep juste la commande ci-dessus comme suit:
systemctl list-unit-files | grep enabled
Je préfère cette commande aux unités de liste systemctl : la différence est que celle-ci n'affichera que les services que votre système d'exploitation a en mémoire = le système d'exploitation pense en avoir besoin), tandis que les fichiers d'unité de liste systemctl afficheront tous les services installés, y compris ceux qui sont masqués ( c'est-à-dire ceux qui sont supposés ne jamais être démarrés, même pas manuellement), et ceux qu'il n'activera pas , qui sont appelés statiques . En d'autres termes, la commande que j'ai suggérée est plus complète que celle répertoriant uniquement 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 d' exécution , mais des cibles . les niveaux d'exécution existent toujours pour des raisons de compatibilité et peuvent être considérés comme des cibles spécifiques en répertoriant toutes les cibles disponibles via
systemctl list-unit-files --type=target
tandis 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 .
systemd
, mais cette réponse semble toujours fonctionner.