J'ai besoin de créer un démon à partir de l'application dans Debian. Existe-t-il un outil standard pour cela dans Debian comme "upstart" dans Ubuntu? Je n'ai besoin que de commandes start-stop, pour démarrer un programme en tant que démon avec quelques options et un fichier pid et le tuer avec le fichier pid.
J'ai regardé init.d mais il semble que ce soit pour le lancement au démarrage. Je veux démarrer mon démon manuellement.
debian
daemon
debian-lenny
upstart
Kuroki Kaze
la source
la source
Réponses:
Vous pouvez créer votre démon manuellement en suivant le
/etc/init.d/skeleton
fichier sur Debian.Vous pouvez utiliser
/usr/bin/service
pour lancer$ sudo service yourdaemon start
et arrêter$ sudo service yourdaemon stop
votre démon.Tant que vous ne liez votre script à aucun des
/etc/rc?.d
répertoires, il ne démarre pas au démarrage.D'un autre côté, vous voudrez peut-être regarder daemontools , qui n'est pas standard sur debian mais qui a des fonctionnalités intéressantes.
la source
/usr/bin/service
sur mon système (c'est Debian Lenny), mais je peux démarrer des scripts directement avec/etc/init.d/myservice start
.sudo invoke-rc.d yourservice start
aussi bienDebian (et Ubuntu) ont le programme d'aide
start-stop-daemon
qui est utilisé dans les scripts d'initialisation. Il a plusieurs options pour démarrer et suivre les démons. Vous pouvez simplement écrire un wrapper autour de lui, par exemplela source
Pour démoniser correctement un processus pour Debian, vous devrez prendre plusieurs mesures, y compris quitter le processus de contrôle, réinitialiser les E / S et créer un fichier d'ID de processus pour jouer correctement. Vous pouvez à la place utiliser quelque chose comme le programme démon du package du même nom pour le faire pour vous. Si c'est ce que vous vouliez faire, la réponse peut être trouvée ici sur StackOverflow: /programming/3095566/linux-daemonize
La commande upstart s'apparente davantage à la commande invoke-rc.d de Debian ou à la commande de service du paquet sysvinit-utils. Ils s'attendent à travailler à partir des scripts d'initialisation dans /etc/init.d. Il est standard sur Debian d'en créer un pour votre paquet et de le faire utiliser le programme start-stop-daemon comme vous pouvez le voir dans l'exemple /etc/init.d/skeleton.
Ce n'est pas parce que vous créez un script /etc/init.d/myservice qu'il doit démarrer automatiquement. Vous pouvez ajuster les niveaux d'exécution auxquels il s'arrête et démarre automatiquement à l'aide d'un outil comme update-rc.d. Ceci est décrit plus en détail dans Désactiver un service à partir de tous les niveaux d'exécution?
la source