web-dev-qa-db-fra.com

Vous voulez faire un script upstart; besoin d'aide et de conseils

En tant qu’Am, j’ai besoin de commencer au hasard et d’arrêter (faute d’une meilleure Parole dans ma tête) un travail. Je commence par taper Java -jar foo.jar et pour l'arrêter, découvrir son pid et le tuer. Le tuer ne cause aucune perte de données, aucune corruption ou quoi que ce soit, juste un renseignement. Il est fastidieux de faire ces deux étapes car la première commande doit être exécutée à partir d’un répertoire particulier, c’est-à-dire /usr/share/jetty (le kill peut être exécuté de n’importe où).

Alors je pensais quelque chose sur les lignes de

service foo start et service foo stop pour démarrer et arrêter les services. Est-ce possible, et surtout correct? N 'y a-t-il pas une autre solution?

Merci.

13
theTuxRacer

Ouais Upstart est une très bonne option pour cela. Il suffit de créer un nouveau fichier:

sudoedit /etc/init/my-jetty-jar.conf

Vous pouvez changer le nom du fichier comme bon vous semble mais y coller ceci:

description     "Run my jetty jar"

# no start option as you might not want it to auto-start
# This might not be supported - you might need a: start on runlevel [3]
stop on runlevel [!2345]

# if you want it to automatically restart if it crashes, leave the next line in
respawn

script
    cd /usr/share/jetty
    su -c "/usb/bin/Java -jar /path/to/foo.jar" nobody
end script

Quelques notes à ce sujet, je suis suing à personne pour la sécurité. Vous aurez peut-être besoin de su dans un autre compte, mais il n'est probablement pas recommandé de le lancer en tant que root.

13
Oli