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 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 en cours d'exécution, les -'s services pas courir, les ?'s services qui n'autorisent pas le statut en tant que commande possible :il s'agit principalement de commandes qui n'ont pas besoin d'être exécutées tout le temps, juste de temps en temps.
Pour revenir à votre question, vous devez comprendre le niveau d'exécution s 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 Framboise
# The default runlevel.
id:2:initdefault:
cette ligne l'identifie comme 2, puis progresse vers le niveau d'exécution final standard de votre 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 depuis é/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
Cela imprime la ligne qui commence par Default-Start dans tous les fichiers de /etc/init.d/ , où sont conservés les fichiers identifiant 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 n'est pas en cours d'exécution, il est démarré.
Cela vous donne une idée précise des différentes étapes de démarrage des services. Mais dans le même niveau d'exécution, les lignes Required-Start et Should-Start définissent des dépendances matérielles et logicielles pour le service en question, c'est-à-dire services qui doivent courir et devrait exécuté avant le service en cours d'examen. Sans les services Required-Start, le service en question échouera, sans les services Should-Start à la place, il n'y aura pas d'échec général, peut-être juste le manque de certaines fonctionnalités utiles. La même chose se produit à l'arrêt avec Required-Stop et Should-Stop.
SYSTEMD :
La commande pour lister tous les services est
systemctl list-unit-files
qui va cracher beaucoup d'informations. Pour sélectionner tous les services activés , c'est-à-dire , ceux qui sont démarrés au démarrage, il suffit de grep 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 système d'exploitation a en mémoire =le système d'exploitation pense en avoir besoin), tandis 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'il ne sera pas activate, qui sont appelés statiques . En d'autres termes, la commande que j'ai suggérée est plus complète que celle qui ne liste que active prestations de service.
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 cibles . niveaux d'exécution existent toujours pour des raisons de compatibilité, et peuvent être considérées 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.
Pour une gestion simple du service de démarrage sur Raspberry Pi, je recommande l'outil rcconf
. Il vous permet d'activer/désactiver facilement les services en /etc/init.d/
. Vous pouvez également voir s'ils sont activés et s'exécuteront au démarrage.
Pour installer l'outil
sudo apt-get install rcconf
Et est très simple à utiliser avec l'interface utilisateur texte
sudo rcconf
sudo nano /etc/rc.local
C'est ici que vous insérez le fichier de commandes ou les commandes à exécuter au démarrage. Je lance aussi automatiquement Openvpn au démarrage :)