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 s'exécuter en avant-plan plutôt qu'en arrière-plan, cela rendra les choses plus simples. Sinon, vous devez utiliser 'expect fork' ou 'expect daemon' pour suivre les forks qu'un programme doit faire pour se détacher des terminaux de contrôle.
pre-start sert principalement à configurer les choses, comme créer des répertoires dans /var/run. Vous pouvez également créer un fichier de configuration, car l'environnement sera transmis à l'exécution principale.
post-start peut être utile si vous voulez vous assurer que upstart ne considère pas le service comme démarré tant qu'une certaine condition n'est pas remplie (comme le port qui répond aux requêtes).
En fin de compte, le but est de le rendre aussi simple que possible. Si le startup.sh exécute 'jira --daemon' et qu'à la place vous pouvez exécuter 'jira' et qu'il ne se détache pas, alors avec upstart vous feriez juste ce qui suit
start on runlevel [2345]
stop on runlevel [!2345]
exec jira
Tant que le processus ne se démonise pas, il est très facile pour upstart de suivre ce qu'il fait, ce qui conduit finalement à un fichier de travail plus simple et à un système plus robuste.