Odpowiedzi:
Masz kilka opcji:
1) spraw, aby mysql poinformował Upstart, że zaczął się od emisji zdarzenia
initctl emit mysql-started
" lub podobne.
Można to rozwiązać, dodając initctl
wywołanie do /etc/init.d/mysql
.
2) Wyłącz mysql z normalnych poziomów pracy SysV i utwórz zadanie upstart otoki, które je uruchamia (nie to nie obsługuje zatrzymywania - tylko przykład):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
Następnie miej swoją pracę „ start on started mysql-sysv
”.
Problem polega na tym, że wpadniesz w kłopoty, jeśli ktoś (lub jakieś narzędzie systemowe automatycznie) ponownie doda /etc/rc?.d
linki do oryginalnego /etc/init.d/mysql
skryptu usługi. Może się również okazać, że mysql nie jest właściwie gotowy, dopóki jakiś czas po uruchomieniu głównego pid nie zostanie uruchomiony. Bazy danych są problematyczne, ponieważ przejście do trybu online może trochę potrwać nawet po ich uruchomieniu (odtwarzanie dziennika transkrypcji itp.).
3) Utwórz zadanie początkowe („kelner”), które będzie „uruchamiać się po zatrzymaniu rc” (tj. Rozpocząć, gdy wszystkie zadania SysV twierdzą, że zostały zakończone), a następnie odpytuje, czekając, aż mysql będzie gotowy, a następnie kończy działanie. Niech twoja praca „zacznij od zatrzymanego kelnera”.
4) Konwertuj mysql na zadanie Upstart (najlepsza opcja). Tutaj jest punkt początkowy dla nowej konfiguracji mysql: https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu
os.system('/sbin/initctl emit consul-finished')
startowe z serwera konfiguracji za pomocą uruchomionego skryptu Python , a następnie uruchamiamy inne usługistart on consul-finished
initctl emit cloud-init-finished
usługę sysv, aby móc się połączyć
Sugeruję rozpoczęcie pracy upstart po zakończeniu wszystkich zadań niezwiązanych z upstart:
start on started rc
/etc/init/rc.conf
jest rzeczą, która rozpoczyna zadania niezwiązane z upstartem od samego początku.
Rekwizyty: /server//a/533481
Co powiesz na korzystanie
pre-start exec /etc/init.d/mysql start
w twojej nowej pracy!