Máte několik možností:
1) přimějte mysql, aby informoval Upstart, že začal odesláním události
initctl emit mysql-started
“ nebo podobně.
To lze vyřešit přidáním initctl
vyvolání na /etc/init.d/mysql
.
2) Zakažte mysql na normálních úrovních běhu SysV a vytvořte obálkovou úlohu Upstart, která jej spustí (ne, toto nezvládá zastavení - jen příklad):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
Pak si dejte svou práci "start on started mysql-sysv
".
Problém je v tom, že se dostanete do potíží, pokud někdo (nebo nějaký systémový nástroj automaticky) znovu přidá /etc/rc?.d
odkazuje na původní /etc/init.d/mysql
servisní skript. Také můžete zjistit, že mysql není ve skutečnosti připraveno až po nějaké době poté jeho hlavní pid začal. Databáze jsou problematické, protože jejich „online“ může nějakou dobu trvat, i když byly spuštěny (přehrání protokolu transakcí atd.).
3) Vytvořte počáteční úlohu ("waiter"), která se "spustí při zastaveném rc" (tj. spustí se, když všechny úlohy SysV prohlásily, že byly dokončeny) a poté se dotazuje, až bude mysql připraveno, a poté se ukončí. Nechte svou práci „začít na zastaveném číšníkovi“.
4) Převeďte mysql na úlohu Upstart (nejlepší možnost). Zde je výchozí bod pro počáteční konfiguraci mysql:https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu