Comment spécifier une commande d'arrêt du démon avec upstart?

9

Dans une configuration parvenue, comment définir quelle commande doit être utilisée pour arrêter un serveur. Disons que j'ai un démon qui a deux processus séparés.

  • startup.sh - pour démarrer le serveur
  • shutdown.sh - pour arrêter le serveur

Supposons que j'ai un fichier parvenu qui ressemble à ceci.

description "Some Example Service"
author "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn

exec startup.sh 

Comment puis-je dire à Upstart qu'il doit appeler shutdown.shlors de l'arrêt du serveur? Comment Upstart s'attend-il normalement à arrêter un démon?

ams
la source

Réponses:

10

Utiliser execpour démarrer le processus est correct, mais lorsque vous l'arrêtez, si vous avez absolument besoin d'exécuter un script spécifique ou un ensemble de commandes, vous pouvez utiliser la pre-stopstrophe.

pre-stop exec shutdown.sh

Je suppose que vous avez essayé d'utiliser une strophe exec et que cela n'a pas fonctionné, peut-être parce que votre démon nécessite un nettoyage spécialisé. Notez que les démons qui se comportent bien devraient recevoir un signal de démarrage lorsque le travail est arrêté, et s'ils gèrent le signal de manière appropriée, aucun nettoyage supplémentaire ne devrait être nécessaire.

L'arrêt d'un travail implique d'y envoyer SIGTERM. S'il y a quelque chose à faire avant SIGTERM, faites-le ici. On peut dire que les services doivent gérer SIGTERM très gracieusement, donc cela ne devrait pas être nécessaire.

s'il y a quelque chose de critique, comme un vidage sur le disque, et que l'augmentation du délai d'expiration n'est pas une option, le pré-arrêt n'est pas un mauvais endroit pour le faire

Lisez également cette section pour l'intégralité du flux de travail de ce qui se passe lorsque vous arrêtez un travail. Remarquez quand le pré-arrêt est exécuté et comment un signal est envoyé au processus par la suite, c'est ainsi que upstart gère les arrêts de travail normalement.

Ma source est le livre de recettes officiel d'Upstart à: http://upstart.ubuntu.com/cookbook/

roadmr
la source
1
"Notez que les démons qui se comportent bien devraient recevoir un signal du début lorsque le travail est arrêté, et s’ils gèrent le signal de manière appropriée, aucun nettoyage supplémentaire ne devrait être nécessaire." - notez que nous utilisons des scripts dans le monde Unix afin d'avoir le contrôle des choses à côté du travail des programmeurs. Et c'est une remarque ridicule, car nous avons besoin d'un endroit pour inclure, par exemple, l'envoi d'un e-mail, la suppression du verrou du disque, etc. et ces tâches ne doivent pas nécessairement faire partie du démon lui-même. Par conséquent, upstart n'est pas prêt à être utilisé dans l'environnement des serveurs.
kakaz
De cette réponse (celle!) Je vois qu'il n'y a pas de bonne façon de faire ce dont nous avons besoin?
kakaz