2011-03-04 4 views
3

J'utilise le kit Ruby Daemon pour installer un service qui effectue diverses opérations d'arrière-plan pour mon application Rails.Comment configurer un script init.drc pour un projet Daemon-kit?

Il fonctionne très bien quand j'appelle sur la ligne de commande:

./bin/bgservice 

Comment puis-je faire pour créer un démon initd de script de démarrage pour elle, afin qu'il démarre automatiquement au redémarrage?

Répondre

2

Il y a quelques approches:

  1. Vous pouvez écrire /etc/init.d/ scripts qui pourraient être placés dans les répertoires /etc/rc?.d/ (ou peu importe où ils vivent sur vos distributions cibles). Certains détails sur ce mécanisme peuvent être trouvés dans les Debian policy guidelines et openSUSE initscript tutorial. Il y a un nombre fâcheux d'idiosyncrasies spécifiques à la distribution dans initscripts, alors ne vous sentez pas obligé d'en écrire un simple et demandez aux distributions d'en fournir de «meilleures» adaptées à leur environnement. (Par exemple, une distribution dérivée de Debian fournira l'aide start-stop-daemon(8) extrêmement utile, mais il manque cruellement d'autres distributions.)

  2. Vous pouvez écrire upstart spécifications d'emploi pour les distributions qui prennent en charge upstart (qui je pense est Ubuntu , Google ChromeOS, Fedora, .. plus?). upstart documentation est encore assez faible, mais il ya et beaucoup d'exemples dans /etc/init/ sur Ubuntu, probablement le même emplacement dans d'autres distributions qui utilisent upstart. Obtenir les dépendances correctes peut être un peu de travail dans toutes les distributions, mais les spécifications de travail upstartsemblent beaucoup plus simple à écrire et à maintenir que initscripts.

  3. Vous pouvez ajouter des lignes à /etc/inittab sur les distributions qui prennent toujours en charge le fichier SysV-init standard inittab(5). Cela ne serait utile que votre programme ne fait pas le démon habituelle fork(2)/setsid(2)/fork(2) incantatoire, comme init utilise le pid il obtient de fork(2) pour déterminer si votre programme doit être redémarré.

  4. Moderne Vixie cron(8) prend en charge un spécificateur @reboot dans les fichiers crontab(5). Cela peut être utilisé à la fois par le système crontab et par les crontabs utilisateur, ce qui peut être sympa si vous voulez simplement exécuter le programme en tant que compte de connexion habituel.

0

Comme l'auteur du kit démon que je l'ai évité de faire des scripts de style init en raison de faire face aux différentes distributions et ils sont des migrations de style ancien init-V plus récent arriviste/insserv, me sauver un cauchemar. Comment je recommande de faire ceci est d'utiliser le god-config-generator, et de m'assurer que dieu est démarré au démarrage (par runit ou par d'autres moyens), et que Dieu démarre le daemon et le maintient en marche.

Au mieux je vais expand-kit de démon pour être en mesure de générer des scripts de démarrage pour RunIt ...

HTH.

Questions connexes