Ubuntu 12.04'teki bir init betiğinden başlatılan bir işe nasıl bağımlı olunur


10

Ubuntu 12.04 LTS kullanıyorum ve bu sistem öncelikle başlangıç ​​işlerini kullanıyor. Maalesef sistemim ayrıca yalnızca bir başlangıç ​​betiğine sahip, ancak başlangıç ​​betiğine sahip olmayan el ile derlenmiş bir dbmail sunucusuna da bağlı .

Kullanılması update-rc.d dbmail defaultsBütün çalışma seviyelerine yönelik dbmail yükledim fakat MySQL dolmadan cin tekrar ölür böylece maalesef, başlatılır. Ayrıca S90'a veya benzerlerine taşımayı da denedim, komut dosyası çalıştırıldığında hala MySQL kullanılamıyor.

Komut dosyasının LSB başlığına aşağıdaki gibi bir bağımlılık eklemeye çalıştım:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          dbmail
# Required-Start:    $local_fs $remote_fs $syslog $network mysql
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start dbmail services
# Description:       Run network services provided by dbmail such as
#                    imap-server, pop3-server, lmtp-server, timsieve-server
### END INIT INFO

Maalesef script hala MySQL'den önce başlatılmış gibi görünüyor. Eski moda init betiklerini kullanmaya alışkınım, işleri başlatmak için değil, bu yüzden biraz kafam karıştı. Bağımlılığı nasıl ekleyebilirim veya mysqlişin dbmailinit betiğinden önce başlamasını nasıl sağlayabilirim ?

Başlatma sırasındaki işler + init betikleri için alınan başlangıç ​​sırasını nasıl kontrol edebilirim / görebilirim? Bunun için bir araç var mı?

MySQL zaten çalıştığı için betiği başlangıçta işe yaradıktan sonra kabuktan elle başlatmak.


Çirkin bir çözüm olarak işe yarayan şey, init betiğinin "start ()" işlevine "sleep 3" eklemek oldu. Ancak daha temiz bir yolun olması gerekiyor, bu sadece bir yarış koşulunu kötüye kullanıyor ve bunu doğru şekilde düzeltmeyi gerçekten istiyorum.
Martin C.

Yanıtlar:


12

Ben koşarsan düşünmek /etc/init.d/dbmail startgelen /etc/rc.localbu ürün, tüm sonradan görme işleri / diğer başlatma betikleri sonra başlayacaktır.

Ancak, muhtemelen yeni bir başlangıç ​​işi ekleyerek bunu düzeltebilirim /etc/init/dbmail.conf. Genellikle init.d komut dosyalarının durum kontrolü vb. İçin bir çok kodu vardır, bu da sizin için işe yarar. Bu kadar basit olabilir:

start on started mysql
exec /usr/local/bin/dbmail

Veya, muhtemelen mevcut init betiğini bu şekilde kullanabilirsiniz:

start on started mysql
pre-start script
  /etc/init.d/dbmail start
end script
post-stop script
  /etc/init.d/dbmail stop
end script
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.