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

13

Atm, je dois commencer et arrêter au hasard (faute d'un meilleur mot dans mon esprit) un travail. Je le démarre en tapant java -jar foo.jaret pour l'empêcher de découvrir son pid et de le tuer. Le tuer ne cause aucune perte de données ou corruption ou quoi que ce soit, juste pour info. 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ù).

Je pensais donc à quelque chose comme

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

Merci.

theTuxRacer
la source

Réponses:

13

Ouais Upstart est une assez bonne option pour cela. Créez simplement un nouveau fichier:

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

Vous pouvez changer le nom de fichier en ce que vous voulez, mais collez-le:

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 sun'implique à personne pour la sécurité. Vous pourriez en avoir besoin sudans un autre compte, mais il n'est probablement pas recommandé de l'exécuter en tant que root.

Oli
la source
Est-il nécessaire de redémarrer pour que les modifications prennent effet? update-rc.dn'a pas fonctionné /
theTuxRacer
Vous n'avez pas besoin update-rc.dd'emplois parvenus.
Oli
upstart surveille / etc / init en utilisant inotify, donc il connaît généralement toutes les modifications apportées aux fichiers en dessous. Pas besoin de faire quoi que ce soit, sauf «démarrer ma-jetty-jar». Oh, et @Oli, vous pouvez certainement avoir un travail sans début. Notez que l'arrêt au niveau d'exécution [! 2345] pourrait être signalé à l'avenir comme une mauvaise façon d'arrêter les choses (car cela ne garantit pas qu'ils s'arrêteront avant que les systèmes de fichiers ne soient
démontés
Malheureusement, votre solution ne semble pas fonctionner (plus) pour Jetty 8 car start.jar engendre un autre processus, qui ne sera pas tué avec votre approche. J'ai créé une autre question pour résoudre ce problème: stackoverflow.com/questions/10796242/…
Sebi
4
@Sebi Vous devrez peut-être simplement y coller un expect fork(avant les scriptdéparts).
Oli