Cela peut avoir plus à voir avec la détection des systèmes d'exploitation, mais j'ai spécifiquement besoin du système init actuellement utilisé sur le système.
Fedora 15 et Ubuntu utilisent maintenant systemd, Ubuntu utilisait Upstart (par défaut depuis longtemps jusqu'au 15.04), tandis que d'autres utilisent des variantes de System V.
J'ai une application que j'écris pour être un démon multiplateforme. Les scripts d'initialisation sont générés dynamiquement en fonction de paramètres qui peuvent être transmis lors de la configuration.
Ce que j'aimerais faire, c'est générer uniquement le script pour le système d'initialisation particulier qu'ils utilisent. De cette façon, le script d'installation peut être exécuté raisonnablement sans paramètres en tant que root et le démon peut être "installé" automatiquement.
Voici ce que j'ai trouvé :
- Recherchez systemd, upstart, etc. dans /bin
- Comparez /proc/1/comm à systemd, upstart, etc
- Demander à l'utilisateur
Quel serait le meilleur moyen multiplateforme de procéder ?
Un peu lié, Puis-je dépendre de bash pour être sur la majorité de *nix ou est-ce que cela dépend de la distribution/du système d'exploitation ?
Plates-formes cibles :
- Mac OS
- Linux (toutes les distributions)
- BSD (toutes versions)
- Solaris, Minix et autres *nix
Réponse acceptée :
Pour la deuxième question, la réponse est non et vous devriez jeter un œil aux ressources pour la programmation shell portable.
Quant à la première partie - tout d'abord, vous devez certainement être prudent. Je dirais effectuez plusieurs tests pour vous assurer – parce que le fait que quelqu'un ait systemd (par ex.) installé, ne signifie pas qu'il est réellement utilisé comme init
par défaut . Aussi, en regardant /proc/1/comm
peut être trompeur, car certaines installations de divers programmes d'initialisation peuvent automatiquement créer /sbin/init
un lien symbolique ou même une version renommée de leur programme principal.
Peut-être que la chose la plus utile pourrait être de regarder le type de scripts d'initialisation - parce que c'est ce que vous allez réellement créer, peu importe ce qui les exécute.
En passant, vous pouvez également jeter un œil à OpenRC qui vise à fournir une structure de scripts d'initialisation compatible avec les systèmes Linux et BSD.