W systemie Ubuntu 10.04 muszę uruchomić usługę z aktualizacją, ale tylko wtedy, gdy mysql jest uruchomiony.
Problem polega na tym, że sam mysql nie jest obsługiwany przez upstart, więc nie mogę użyć funkcji „start on”.
Co mogę zrobić ?
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:
/etc/init/rc.conf
jest rzeczą, która rozpoczyna zadania niezwiązane z upstartem od samego początku.Rekwizyty: /server//a/533481
źródło
Co powiesz na korzystanie
w twojej nowej pracy!
źródło