J'écris une application démon simple en utilisant C/C++ et je veux qu'elle démarre au démarrage de Linux.
J'ai essayé de modifier /etc/init.d/skeleton
pour ajouter un script dans le répertoire init.d comme suit
-
ajouté mon application démon dans
/usr/sbin/
répertoire et changéNAME=myDaemon
-
écrire
update-rc.d myDaemon default
dans Terminal -
et il a ajouté des liens symboliques vers
rc#.d
répertoires
Mais ça n'a pas marché.
Ma deuxième tentative a été de modifier rc.local
comme
/usr/sbin/myDaemon start
Mais cela n'a pas fonctionné non plus.
Comment puis-je faire démarrer mon démon avec le système d'exploitation ? Je veux tout faire par programmation.
J'utilise Ubuntu 10.10 mais s'il existe une solution générale pour toutes les distributions, ce serait super !
Réponse acceptée :
Vous ne modifiez pas le /etc/init.d/skeleton
dossier. Vous copiez dans un nouveau fichier /etc/init.d/mamoudservice
(remplace mamoudservice
avec un nom plus approprié) et ensuite vous éditez ce nouveau fichier de manière appropriée.
Ensuite, vous ajoutez un lien symbolique depuis /etc/rc2.d/S99mamoudservice
vers /etc/init.d/mamoudservice
etc.
Utilisez par exemple
/bin/bash -vx /etc/init.d/mamoudservice start
pour comprendre comment le bash
shell interprète votre script.
Si votre programme démon /usr/sbin/mamouddaemon
est codé en C ou en C++, je suggère d'utiliser openlog et syslog
à l'intérieur, au moins pour obtenir des messages de débogage (ne sortez pas vers stderr
ou stdout
dans un démon, il pourrait aller nulle part).
Une alternative à votre /etc/init.d/mamoudservice
le script pourrait être de mettre un @reboot
entrée dans votre crontab