2014-12-15 02:59:25 +0000 2014-12-15 02:59:25 +0000
17
17

Comment savoir quels services fonctionnent au démarrage sur Raspberry Pi ? (framboise)

J'ai quelques services qui fonctionnent au démarrage mais j'ai en fait oublié comment je les ai mis en place ! Si je veux changer leur activité, comment puis-je le faire ? Par exemple, je veux peut-être désactiver un service au démarrage ou je veux peut-être le démarrer en utilisant une autre méthode.

Plus précisément, j'ai un service openvpn qui fonctionne bien au démarrage mais certains tutoriels disent que je devrais lier le service des programmes de partage de fichiers au vpn lui-même de sorte que si le vpn tombe en panne, alors le service de partage de fichiers le fasse aussi. Mais je pense que l'exécution automatique de mon vpn complique peut-être les choses et que je devrais le désactiver ou modifier la façon dont il se lance. Mais comment vérifier ?

Réponses (3)

23
23
23
2014-12-16 14:49:09 +0000

Je suppose que vous avez une framboise utilisant le 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 tard), voir en bas.

Tout d'abord, vous pouvez déterminer quel système fonctionne actuellement 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 qui fonctionnent, les _- les services _non qui fonctionnent, les _ ? les services qui n'autorisent pas le statut comme commande possible : il s'agit le plus souvent de commandes qui ne doivent pas fonctionner tout le temps, seulement occasionnellement.

Pour revenir à votre question, vous devez comprendre les runlevels sous Linux. Les niveaux d'exécution (0-6 + S) identifient les services qui peuvent ou 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 au moyen 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.

Un utilisateur unique (1) est souvent aussi 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 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 lancé au niveau d'exécution N, lorsque le système passe à N+1, il n'a pas besoin d'être relancé, mais s'il s'avère ne pas fonctionner, il est lancé.

Cela vous donne une idée exacte des différentes étapes auxquelles 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 matérielles et logicielles pour le service en question, c'est-à-dire les services qui doivent et devraient être exécutés 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, mais peut-être seulement un manque de certaines fonctionnalités utiles. La même chose se produit à l'arrêt avec les services Required-Stop et Should-Stop.

SYSTÈME :

La commande permettant de lister tous les services est

systemctl list-unit-files

ce qui crachera beaucoup d'informations. Pour sélectionner tous les services enabled, i.e, ceux qui sont lancés au démarrage, il suffit de greffer 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 que votre OS a en mémoire = l'OS pense en avoir besoin), alors 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'elle n'activera pas, qui sont appelés static. En d'autres termes, la commande que j'ai suggérée est plus complète que celle qui ne répertorie que 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 de course, mais des cibles. Les runlevels existent toujours pour des raisons de compatibilité, et peuvent être considérés 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 .

8
8
8
2015-04-09 19:26:26 +0000

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'ils fonctionneront au démarrage.

Pour installer l'outil

sudo apt-get install rcconf

Et il est très simple de l'utiliser avec l'interface utilisateur texte

sudo rcconf
3
3
3
2014-12-15 11:09:00 +0000
sudo nano /etc/rc.local

C'est ici que vous insérez le fichier batch ou les commandes à exécuter au démarrage. Je lance automatiquement Openvpn au démarrage aussi :)