"Reaparecer demasiado rápido, se detuvo". ¿Cómo desactivar UPSTART durante 5 minutos?

11

En los viejos tiempos, el demonio init solía deshabilitar tareas que reaparecían demasiado rápido.

Descubrí a mi propio riesgo que UPSTART simplemente los detiene. Siempre.

He encontrado los controles COUNT e INTERVAL para cuándo detener un trabajo que está reapareciendo rápidamente, pero no puedo encontrar cómo reiniciar ese trabajo después de un tiempo de espera especificado.

  • Esto es para un servidor remoto que debe conectarse a través de ssh para que pueda volver a entrar en un túnel. Pero regularmente tiene problemas de conexión y el trabajo que ejecuta la conexión ssh está muriendo. Tontomente esperaba que el advenedizo mantuviera el trabajo en funcionamiento.

¿Hay alguna manera, o necesito hacer algo como ejecutar un trabajo cron para verificar si se está ejecutando y si no, reiniciarlo?

Keith
fuente

Respuestas:

10

Upstart permite una suspensión posterior a la detención para retrasar el reinicio de un trabajo. De http://upstart.ubuntu.com/cookbook/#delay-respawn-of-a-job

post-stop exec sleep 5

Ahora, cuando el trabajo falla, esperará 5 segundos antes de intentar conectarse nuevamente. Combine eso con configurar la reaparición en algo así como 10 veces en 30 segundos y debería intentar reaparecer para siempre (solo lo intentaría 7 veces en 30 segundos, por lo que no debería ser expulsado de la reaparición)

tgm4883
fuente
Sí, supongo que es una buena solución. Sin embargo, me pregunto si debería tener la posibilidad de especificar un tiempo de espera antes de intentar ejecutar el trabajo nuevamente. Realmente no me gusta la idea de que simplemente detenga los trabajos. Preferí mucho la forma en que init deshabilita un trabajo durante cinco minutos.
Keith
Creo que el caso de uso del que estás hablando es bastante bajo. Si un trabajo falla, hay una razón para ello, por lo que debe solucionarse. La mayoría de las personas no querrían que el trabajo continúe intentando comenzar y fracasar, ya que esto podría eliminar registros con información valiosa o tener otros resultados catastróficos. Creo que está utilizando el sistema de arranque para algo para lo que no fue diseñado, por lo que los métodos estándar para reiniciarlo podrían estar fuera de discusión. Dicho esto, ¿la conexión de red en esa máquina intenta reconectarse cuando se corta la conexión? Si es así, es posible que pueda iniciar su trabajo en el inicio de la red.
tgm4883
1
Estoy seguro de que tiene razón en que esto está lejos de ser el caso de "la mayoría de la gente". Como he estado pirateando slackware y sistemas personalizados durante los últimos 20 años, muchos de estos conceptos son extraños para mí. ¿Podría indicarme la dirección correcta para personalizar el inicio / reinicio de la red Ubuntu? Dios, esto me hace sentir viejo y fuera de contacto. Podría hacerlo en slackware en 10 segundos.
Keith
1
esto está cubierto en el libro de cocina; recomiendan usar una estrofa posterior a la parada: upstart.ubuntu.com/cookbook/#id379
jcomeau_ictx
1
Gracias @jcomeau_ictx, eso es exactamente, creo que la respuesta debería actualizarse con el enlace upstart.ubuntu.com/cookbook/#delay-respawn-of-a-job . También hay un ticket y un parche aceptados para la solicitud de Keith bugs.launchpad.net/upstart/+bug/252997 con tiempo de espera de reaparición antes de volver a intentarlo.
Andre Miras