web-dev-qa-db-fra.com

Un moyen pratique de vérifier si le système utilise systemd ou sysvinit dans BASH?

Je définis des fichiers bash communs que je souhaite utiliser dans différentes distributions. J'ai besoin d'un moyen de vérifier si le système utilise systemd ou sysvinit (/etc/init.d/). J'ai besoin de cela, donc j'exécute la commande appropriée pour démarrer le service. Quel serait le moyen sûr de vérifier cela? Je vérifie actuellement l'existence de la commande systemctl, mais est-ce vraiment une option car il pourrait y avoir le cas où la commande systemctl pourrait être disponible, mais cela ne signifierait pas nécessairement que systemd est réellement utilisé?

Voici un extrait de mon script bash actuel:

#!/bin/sh
if [ command -v systemctl >/dev/null ]
then
    systemctl service start
else
    /etc/init.d/service start
fi
52
phoops

Systemd et init ont pid = 1

pidof /sbin/init && echo "sysvinit" || echo "other"

Vérifiez systemd

pidof systemd && echo "systemd" || echo "other"

enter image description here

49
user55518