Upstart: uptart olmayan işlemden sonra hizmeti başlat


11

Ubuntu 10.04'te hizmetimi upstart ile başlatmam gerekiyor, ancak sadece mysql çalışıyor ve çalışıyor.

Sorun mysql kendisi uptart tarafından ele alınmaması, bu yüzden "start on" özelliğini kullanamazsınız.

Ne yapabilirim ?

Yanıtlar:


15

Birkaç seçeneğiniz var:

1) MySQL'i Upstart'a bir olay göndererek başladığını bildirmek

initctl emit mysql-started" veya benzeri.

Bu, initctlçağrının eklenmesiyle ele alınabilir /etc/init.d/mysql.

2) mysql'i normal SysV çalışma seviyelerinden devre dışı bırakın ve başlatan bir sarıcı Upstart işi oluşturun (bu durmayı ele almaz - sadece bir örnek):

cat >>/etc/init/mysql-sysv.conf<<EOT
  # wait for SysV job to finish
  start on stopped rc
  exec /etc/init.d/mysql start
EOT

Ardından, işiniz " start on started mysql-sysv" olsun.

Buradaki sorun, birisi (veya bazı sistem araçları otomatik olarak) /etc/rc?.dorijinal /etc/init.d/mysqlhizmet komut dosyasına bağlantıları yeniden eklerse sorun yaşamanızdır. Ayrıca, ana pid başladıktan bir süre sonra mysql aslında hazır olmadığını görebilirsiniz . Veritabanları, başladıktan sonra bile "çevrimiçi" duruma gelmeleri biraz zaman alabileceğinden (işlem günlüğü yeniden yürütme vb.) Sorunludur.

3) "Durdurulan rc'de başlat" (yani tüm SysV işlerinin bittiğini iddia ettiğinde başla) yapan bir sonradan başlatma işi ("garson") oluşturun ve sonra mysql'in hazır olmasını bekleyen anketler, sonra çıkar. İşinizi "durdu garson başlat".

4) MySQL'i bir Upstart işine dönüştürün (en iyi seçenek). Burada yeni bir başlangıç ​​mysql yapılandırması için bir başlangıç ​​noktası var: https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu


1
Etrafa baktıktan sonra, bu cevap sahip olduğum tüm seçenekleri özetliyor. Ayrıca "mysql başladı" ile mysql gerçekten kullanılabilir zaman arasındaki boşluğu işaret ettiğiniz için teşekkür ederiz. # 4'ün zaten bir yerde denendiğini görelim.
Falken

Seçenek 3, "başlatılan garsonda başlat" gerektirir. Açık değil durdu.
adeandrade

seçenek 1 modelimize iyi uyuyor! İlk olarak tüm uptart komut dosyalarını bir yapılandırma sunucusundan çalışan python komut dosyası aracılığıyla os.system('/sbin/initctl emit consul-finished')start on consul-finished
indiririz

Bunun için teşekkürler dostum! Temelde bağlanmak için initctl emit cloud-init-finishedbir sysv hizmetini sed-replace zorunda sona erdi
Jose Alban


-1

Kullanmaya ne dersiniz?

pre-start exec /etc/init.d/mysql start

uptart işinizin içinde!


... sihirli başlamaz sonradan görme mysql başladığında işi.
adaptr

evet sorduğun şey bu değil !!! başka bir yol istedin. En azından ben böyle anladım
Kaji

Benim uptart iş mysql izlemek ve aşağı bildirimleri göndermek gerekiyordu. İzleme işi ile mysql başlatmak biraz rahatsız edici hissediyorum
Falken

Tamamen yanlış olduğunu düşünmüyorum. Ben böyle bir şey yapmak: eğer başlangıç ​​öncesi script! /etc/init.d/rabbitmq-server durumu &> / dev / null; sonra /etc/init.d/rabbitmq-server fi fi betiği başlat
maxadamo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.