Quiere hacer un guión advenedizo; necesito ayuda y consejo

13

Cajero automático, necesito iniciar y detener aleatoriamente (por falta de una mejor palabra en mi mente) un trabajo. Lo comienzo escribiendo java -jar foo.jary para detenerlo descubro su pid y lo mato. Matarlo no causa ninguna pérdida de datos o corrupción ni nada, solo para su información. Es tedioso hacer estos dos pasos porque el primer comando tiene que ejecutarse desde un directorio particular, es decir /usr/share/jetty(el kill puede ejecutarse desde cualquier lugar).

Entonces estaba pensando en algo como

service foo starte service foo stopiniciar y detener servicios. ¿Es eso posible y, lo que es más importante, correcto? hay alguna otra solucion?

Gracias.

theTuxRacer
fuente

Respuestas:

13

Yeah Upstart es una muy buena opción para esto. Simplemente cree un nuevo archivo:

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

Puedes cambiar el nombre del archivo a lo que quieras pero luego pegarlo en él:

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

Algunas notas sobre eso, no voy sua nadie por seguridad. Es posible que lo necesite suen otra cuenta, pero probablemente no se recomienda que se ejecute como root.

Oli
fuente
¿Es necesario reiniciar para que los cambios surtan efecto? update-rc.dno funcionó /
theTuxRacer
No es necesario update-rc.dpara trabajos advenedizos.
Oli
upstart mira / etc / init usando inotify, por lo que generalmente conoce todas las ediciones en los archivos debajo. No es necesario hacer nada excepto 'iniciar mi-embarcadero'. Ah, y @Oli, definitivamente puedes tener un trabajo sin comenzar. Tenga en cuenta que detener en el nivel de ejecución [! 2345] puede marcarse en el futuro como una mala forma de detener las cosas (ya que no garantiza que se detendrán antes de que se desmonten los sistemas de archivos)
SpamapS
Desafortunadamente, su solución ya no parece funcionar (más) para Jetty 8 ya que start.jar genera otros procesos, que no se matarán con su enfoque. Creé otra pregunta para abordar este problema: stackoverflow.com/questions/10796242/…
Sebi
44
@Sebi Es posible que solo necesite pegar una expect forkallí (antes del scriptinicio).
Oli