web-dev-qa-db-fra.com

Comment savoir quels services s'exécutent au démarrage sur Raspberry Pi? (Raspbian)

Certains services fonctionnent au démarrage, mais j'ai en fait oublié comment je les ai configurés! Si je veux changer leur activité, comment pourrais-je le faire? Par exemple, je veux peut-être empêcher un service de démarrer au démarrage ou peut-être le démarrer en utilisant une méthode différente.

Plus précisément, j'ai un service openvpn qui fonctionne au démarrage avec succès, mais certains tutoriels indiquent que je devrais lier le service de programmes de partage de fichiers au vpn lui-même, de sorte qu'en cas de panne du vpn, le service de partage de fichiers également. Mais je pense que l’exécution automatique de mon vpn complique les choses et que je devrais le désactiver ou modifier la façon dont il est lancé. Mais comment vérifier?

16
user1502186

Je suppose que vous avez un Raspberry utilisant du Raspian, qui, à ma connaissance, n’est pas encore passé à systemd. Dans ce cas, la réponse est la suivante.

EDIT: pour systemd (Jessie ou ultérieure), voir en bas .

Tout d'abord, vous pouvez déterminer le système en cours d'exécution actuellement à l'aide de la commande suivante:

  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 + indiquent les services en cours d'exécution, les - services pas en cours d'exécution, les ? Services qui n'autorisent pas status en tant que commande possible: il s'agit généralement de commandes qui n'ont pas besoin de s'exécuter tout le temps, mais occasionnellement.

Pour revenir à votre question, vous devez comprendre runlevel 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 ma framboise

 # The default runlevel.
 id:2:initdefault:

cette ligne l'identifie comme 2, puis passe au niveau d'exécution final de votre distribution standard (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 (encore 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 également identifié par S.

Lors d'un démarrage normal, vous commencez donc à 2 et progressez jusqu'à 5. Pour trouver les services démarrés dans cette progression, exécutez la commande suivante:

 # 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 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, il n'a pas besoin d'être redémarré lorsque le système passe à N + 1, mais s'il s'avère ne pas s'exécuter, il est démarré.

Cela vous donne une idée exacte des différentes étapes auxquelles les services sont lancés. 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, ie services qui must run et should exécuté avant que le service soit 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, éventuellement uniquement l'absence de 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é, c'est-à-dire, ceux qui sont démarrés au démarrage, lancez simplement 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 de votre système d’exploitation en mémoire = le système d’exploitation en a besoin), tandis que systemctl list-unit-files affichera all les services installés, y compris ceux qui sont masqués (ie _ ceux qui sont supposés ne jamais être démarrés, même pas manuellement), et ceux qui ce sera not activate, qui s'appellent statique. En d’autres termes, la commande que j’ai suggérée est plus complète que celle qui répertorie uniquement actif services.

NB: systemd est très différent des systèmes init précédents. En particulier, il n'a pas niveaux d'exécution, mais cibles. runlevels 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

alors que vous pouvez voir votre cible actuelle au moyen de

$ systemctl get-default
  graphical.target

Pour plus d'informations à ce sujet, vous pouvez consulter l'excellente page d'introduction de DigitalOcean .

22
MariusMatutiae

Pour la gestion simple des services de démarrage sur Raspberry Pi, je recommande l'outil rcconf. Il vous permet d’activer/désactiver facilement des services dans /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 de texte

Sudo rcconf
8
jjurm
Sudo nano /etc/rc.local

Voici où vous insérez un fichier de commandes ou des commandes à exécuter au démarrage. Je lance aussi Openvpn au démarrage :)

3
Hexark