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

17

J'ai certains services qui s'exécutent au démarrage mais j'ai en fait oublié comment je les ai configurés! Si je veux changer d'activité, comment faire? Par exemple, je veux peut-être désactiver un service au démarrage ou peut-être que je veux le démarrer en utilisant une méthode différente.

Plus précisément, j'ai un service openvpn qui s'exécute avec succès au démarrage, mais certains tutoriels disent que je devrais lier le service des programmes de partage de fichiers au vpn lui-même afin que si le vpn tombe en panne, le service de partage de fichiers fasse de même. Mais je pense que peut-être 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 se lance. Mais comment vérifier?

user1502186
la source

Réponses:

23

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 .

MariusMatutiae
la source
Raspbian Jessie utilise systemd, mais cette réponse semble toujours fonctionner.
ZX9
1
@ ZX9 Merci d'avoir attiré mon attention sur cet ancien message, j'ai ajouté une modification pour systemd .
MariusMatutiae
8

Pour une gestion de service de démarrage simple sur Raspberry Pi, je recommande l'outil rcconf. Il vous permet d'activer / désactiver facilement les services /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
jjurm
la source
Cela ne répond pas à l'OP, qui était (et je cite): Comment savoir quels services fonctionnent au démarrage sur Raspberry Pi? (raspbian) .
MariusMatutiae
@MariusMatutiae C'est le cas, car rcconfvous indique si un service est activé ou non. J'ai modifié la réponse pour dire explicitement que l'outil affiche ce type particulier d'informations.
2016
3
sudo nano /etc/rc.local

Voici où vous insérez le fichier de commandes ou les commandes à exécuter au démarrage. Je lance également Openvpn au démarrage :)

Hexark
la source