Savoir quel système d'init est utilisé

Partagez ici vos Trucs et vos Astuces.
Répondre
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 425
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Salut à tous,

Il existe moult services d'init sous Linux.Comment trouver celui qui est utilisé ?
Simplement chercher les paquets installés n'est pas suffisant, puisqu'on peut, par exemple, installer initv et systemd, mais n'en utiliser qu'un seul des deux.
Avatar de l’utilisateur
BelZéButh
Contributeur
Contributeur
Messages : 454
Inscription : 22 avr. 2016, 08:39
Localisation : Ch'timi
Status : Hors-ligne

Code : Tout sélectionner

# ps -aux
En, PID 1.
La première loi du libre et de tout hacker, au sens noble, le partage de la connaissance !
Site de réinformation ... http://www.panamza.com
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Le problème c'est qu'ils s'appellent tous init lorsqu'ils sont installé non ?

en faisant un ls -l /sbin/init on peut déjà savoir si /sbin/init est un lien symbolique vers un autre fichier, qui pourrait se trouver ou être nombé de façon plus parlante
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 425
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Effectivement, sur un système qui utilise sytemd :

Code : Tout sélectionner

$ ps aux | head -n 2
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  15812  1068 ?        Ss   Jul18   0:01 init [2]
Et pas de lien pour init :

Code : Tout sélectionner

$ ls -l /sbin/init
-rwxr-xr-x 1 root root 40752 Jun 22 13:34 /sbin/init
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

J'ai trouvé ça :

Code : Tout sélectionner

if [[ `/sbin/init --version` =~ upstart ]]; then echo upstart;
elif [[ `systemctl` =~ -\.mount ]]; then echo systemd;
elif [[ -f /etc/init.d/cron && ! -h /etc/init.d/cron ]]; then echo sysv-init;
else echo aucune idée; fi
Ca fonctionne chez moi pour sysv
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

@ vohu

Pour information, depuis un système utilisant systemd (debian jessie) :

Code : Tout sélectionner

$ if [[ `/sbin/init --version` =~ upstart ]]; then echo upstart;
> elif [[ `systemctl` =~ -\.mount ]]; then echo systemd;
> elif [[ -f /etc/init.d/cron && ! -h /etc/init.d/cron ]]; then echo sysv-init;
> else echo aucune idée; fi
/sbin/init : option non reconnue « --version »
systemd
Pour éviter les retours d'erreur de certaines commandes, je propose de modifier un peu la ligne de commandes :

Code : Tout sélectionner

if [[ $(/sbin/init --version 2>/dev/null) =~ upstart ]]; then echo upstart; 
elif [[ $(systemctl 2>/dev/null) =~ -\.mount ]]; then echo systemd; 
elif [[ -f /etc/init.d/cron && ! -h /etc/init.d/cron ]]; then echo sysv-init; 
else echo aucune idée; fi
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Cool, ça pourra toujours resservir ce truc
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 425
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Je confirme, ce script semble fonctionner et m'a bien servi. Un petit déplacement dans T&A ?
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

À noter que ça fonctionne pas forcément sur d'autres distrib, ce n'est pas le cas sous slackware par exemple.

Dans le T&A, c'est une bonne idée.
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4959
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Dunatotatos a écrit :Un petit déplacement dans T&A ?
Fait!
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Répondre