Quel est le meilleur moyen de configurer un programme basé sur Java pour exécuter un service et démarrer au démarrage?
pre-start script
et post-stop script
?)start-stop-daemon
?)Dans mon cas, je suis intéressé par la configuration de Jira , qui possède ses propres scripts de démarrage et d'arrêt de type Tomcat - $JIRA_HOME/bin/startup.sh
et $JIRA_HOME/bin/shutdown.sh
.
La plupart du temps, vous pouvez supprimer une grande partie du code dans ces scripts et vous concentrer sur l'exécution du programme principal. Si vous pouvez lui dire de courir au premier plan au lieu de l’arrière-plan, cela simplifiera les choses. Sinon, vous devez utiliser 'expect fork' ou 'expect daemon' pour suivre les directives qu'un programme doit effectuer pour se détacher des terminaux de contrôle.
le pré-démarrage sert principalement à la configuration, comme la création de répertoires dans/var/run. Vous pouvez également créer un fichier de configuration, car l'environnement sera transmis à l'exécutif principal.
le post-démarrage peut être utile si vous voulez vous assurer que le programme de démarrage n’envisage pas le service démarré tant qu’une condition donnée n’est pas remplie (par exemple, le port répond aux requêtes).
En fin de compte, le but est de le rendre aussi simple que possible. Si le fichier startup.sh exécute 'jira --daemon' et que vous pouvez exécuter à la place 'jira' sans se détacher, il vous suffira de le faire par la suite
start on runlevel [2345]
stop on runlevel [!2345]
exec jira
Tant que le processus n'est pas démonisé, il est très facile pour celui-ci de suivre ce qu'il fait, ce qui conduit finalement à un fichier de travail plus simple et à un système plus robuste.