Pregunta Upstart: parada en el nivel de ejecución [016] vs parada en el inicio de rc RUNLEVEL = [016]


Por lo tanto, estoy trabajando en un script de inicio para mysql. Debería ser trivial, ¿verdad? Mi estrofa de parada se parece a:

kill timeout 30
stop on runlevel [016]

yo shutdown now -r, y mysql grita que mis tablas MyISAM se han bloqueado, igual que yo kill -9mi proceso mysql Abucheo. Upstart no parece estar esperando a que mysql se cierre antes de reiniciar. Algunos buscadores en Google me encuentran este enlace sugiriendo que lo haga, en cambio:

stop on starting rc RUNLEVEL=[016]

Y de hecho, eso parece arreglar el problema.

Pero: ¿WFT? Esencialmente, quiero asegurarme de que mysql esté detenido antes de intentar desmontar los sistemas de archivos locales. ¿Es esta la manera correcta de hacer esto? Porque es mi stop on runlevel ¿La stanza no espera a que mysql se detenga antes de cambiar los niveles de ejecución?

Y: ¿está esto ya, documentado en alguna parte?


5
2018-04-26 01:00


origen




Respuestas:


El problema en realidad está causado por la flexibilidad de Upstarts en el manejo de los trabajos de Upstart y los servicios de SystemV en Ubuntu.

Para obtener información sobre eventos, un buen lugar para mirar son las páginas de manual de su sistema. Si está ejecutando Ubuntu Natty o más nuevo, ahora tendrá upstart-events (7):

man 7 upstart-events

Esto te da mucha información. Aquí hay una versión en línea de (la mayoría de) esa página de manual:

http://upstart.ubuntu.com/cookbook/#ubuntu-well-known-events-ubuntu-specific

Actualmente, el cierre de un sistema Ubuntu en realidad está finalizado por el lado de SysV del trabajo (por razones históricas). Si tu 'stop on runlevel [016]', tu trabajo será comienzo parar cuando eso runlevel Se emite el evento. Sin embargo, si toma demasiado tiempo, el SystemV parte del sistema (/etc/init.d/*) tomará realmente el control y apagará el sistema. Considerando que, si ustedstop on starting rc RUNLEVEL=[016]', Advenedizo (no SystemV) ejecutará su trabajo y una vez que mysql se ha detenido, luego continúe iniciando la secuencia de apagado de SystemV.

El libro de cocina Upstart contiene muchos ejemplos como este:


5
2018-04-26 16:31