2012-05-29 8 views
5

¿Cómo puedo enviar algún tipo de comando de recarga a un daemon iniciado por upstart sin la necesidad de detenerlo por completo?Enviar comando de recarga al servicio upstart

+0

Los servicios iniciados a través de 'upstart' son uno programas de tiempo que se ejecutan para manejar eventos o son demonios de larga ejecución. Normalmente stdin/stdout/stderr para este tipo de programas no existe; escriben en los archivos de registro cuando necesitan informar problemas y leen la entrada de archivos específicos. Tengo curiosidad de por qué estás tratando de evitar este paradigma normal, ¿qué problema estás tratando de resolver? – sarnold

+0

Ejecuto un script node.js como daemon mediante upstart, que debe ejecutarse de forma permanente. Este script a veces necesita obtener un comando de recarga. Lamentablemente, upsatrt no admite la sintaxis como 'recargar servercontrol'. Así que pensé en usar stdin, ya que no puedo detener el script para 'detener servercontrol & start servercontrol'. – buschtoens

+0

'reload service' enviará una señal' SIGHUP' a su proceso; la señal 'SIGHUP' a menudo es utilizada por demonios para solicitar volver a leer sus archivos de configuración ... ¿funcionará para usted? Sería fácil para los administradores administrar su tarea de manera similar a todos los demás trabajos de esa manera. – sarnold

Respuesta

9

upstart normalmente maneja dos tipos de procesos:

  • programas que se ejecutan una vez para controlar un evento
  • demonios que son de larga vida y proporcionar un servicio a otra cosa

Demonios típicamente proporcione un controlador de señal para la señal SIGHUP solicite al daemon que vuelva a leer y vuelva a analizar sus archivos de configuración. (SIGHUP es una señal colgante, más relevante para los terminales que pueden ir y venir a medida que las líneas telefónicas o los protocolos SSH están conectados o desconectados. Para los programas que no tienen terminales, no tiene sentido "colgar" su terminal , por lo que no se envía la señal al daemon, excepto por la intervención del administrador del sistema).

Si usted puede modificar su programa para volver a leer su configuración cuando se recibe una señal SIGHUP, a continuación, puede utilizar el estándar upstartreload service comando para volver a cargar los archivos de configuración. (Puede hacer cualquier cosa en esta señal, pero los administradores del sistema esperan que los daemons vuelvan a leer los archivos de configuración en esta señal; hacer otra cosa puede ser confuso y molesto.)

+4

También puede configurar un script upstart para emitir una señal diferente para el comando 'reload'. Dentro de la secuencia de comandos, simplemente declara 'recargar la señal USR2' o lo que sea que tu aplicación se exima. –

Cuestiones relacionadas