Upstart no está viendo mi nuevo script

27

He agregado un nuevo script a /etc/init/llamado minecraft.confque contiene el script:

start on startup
stop on shutdown
respawn
respawn limit 20 5

script
  export HOME="/root"
  exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script

post-start script
   echo "minecraft started"

Cuando lo intento start minecraftme sale el error:start: Unknown job: minecraft

He intentado correr initctl listy mi trabajo de Minecraft no está en la lista. He intentado correr initctl reload-configurationy no hace ninguna diferencia.

Otros trabajos enumerados por initctl listtrabajo funcionan bien con iniciar, detener y reiniciar.

¿Por qué el advenedizo no ve mi nuevo script?

Jasarien
fuente
Esta podría ser una pregunta estúpida pero ... ¿no debería ser tu guión /etc/init.d/?
Wolfer
@ ahora, gracias, pero ya lo leí y todavía tengo el problema.
Jasarien
@Wolfer, de acuerdo con la guía de inicio para principiantes, dice "Una vez contento, coloque los archivos /etc/inity ahora está listo para reiniciar y usar el programa".
Jasarien
Traté de reproducir el problema pero sin éxito. Copié y pegué su código en /etc/init/minecraft.conf y lo emití sudo start minecraftsin problemas. Aquí está el contenido del archivo de registro. ~$ sudo cat /var/log/upstart/minecraft.log minecraft started /proc/self/fd/9: 3: exec: /root/minecraft/start.sh: not found minecraft started¿Puede proporcionar más detalles sobre la versión de Ubuntu que está utilizando y alguna información útil de syslog?
Goran Miskovic

Respuestas:

12

Verifique los registros de inicio (está adentro /var/log/syslog) mientras recarga la configuración usando initctl reload-configuration. Si hay un error de sintaxis, aparecerá allí. Por lo general, es por eso que no puede usar su nueva configuración inicial.

rcomblen
fuente
11

Una manera fácil de verificar la sintaxis de su script es con el siguiente comando:

init-checkconf -d /etc/init/service_name.conf

Descubrí que incluso con un archivo Upstart válido si el archivo no existía cuando el servidor se inició por última vez, tengo que reiniciar el servidor para que Upstart pueda ver el archivo.

Mike Bethany
fuente
9

Me siento un poco tonto ... Pero aquí está:

Me perdí la estrofa "final script" desde el final del script inicial ...

post-start script
   echo "minecraft started"

debería haber sido

post-start script
   echo "minecraft started"
end script

Sin end scriptembargo, no estoy seguro de por qué funcionó para @schkovich sin el ...

Jasarien
fuente
2
Porque agregué la secuencia final del script. Construido en (mente) autocompletado de código. :(
Goran Miskovic
Llegué al mismo problema, pero exasperantemente, no aparece nada en / var / log e initctl reload-configuration --verbose está en silencio.
Neil McGill
4

En mi caso, era un authorcampo vacío , como este:

author ""

Funcionó solo después de agregar algo en las comillas.

# initctl reload-configuration

también estaba lanzando /etc/init/servicename.conf:2: Expected token a syslog en lugar de stdout . Demasiado ocupado para presentar un informe de error para un paquete moribundo.

int_ua
fuente
3

Quizás no sea aplicable específicamente a esto, pero vale la pena mencionarlo: si edita un archivo de configuración Upstart para un servicio que se está ejecutando, la ejecución restartNO vuelve a cargar la configuración. Debe ejecutar stopy startque los nuevos cambios surtan efecto.

http://upstart.ubuntu.com/cookbook/#restart

kristi
fuente