Aslında bu soruyu StackOverflow üzerinde sordum. Sonra bu muhtemelen daha iyi bir yer olduğunu fark etti.
Benim delayed_job süreçlerimi izlemek için bluepill kurulum var. (Ruby On Rails uygulaması)
Ubuntu Kullanımı 12.10.
Ubuntu'yu kullanarak bluepill servisinin kendisini başlatıp izliyorum upstart
. Benim start-up yapılandırmam aşağıda ( /etc/init/bluepill.conf
).
description "Start up the bluepill service"
start on runlevel [2]
stop on runlevel [016]
expect daemon
exec sudo /home/deploy/.rvm/wrappers/<app_name>/bluepill load /home/deploy/websites/<app_name>/current/config/server/staging/delayed_job.bluepill
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
Ben de expect fork
yerine denedim expect daemon
. Ayrıca expect...
hattı tamamen kaldırmayı denedim .
Makine önyüklendiğinde, bluepill iyi çalışmaya başlar.
$ ps aux | grep blue
root 1154 0.6 0.8 206416 17372 ? Sl 21:19 0:00 bluepilld: <app_name>
Bluepill işleminin PID'si burada 1154'tür. Ancak upstart
yanlış PID'yi izliyor gibi görünüyor. Var olmayan bir PID'yi izliyor.
$ initctl status bluepill
bluepill start/running, process 990
sudo
Bluepill sürecini başlatan sürecin PID'sini takip ettiğini düşünüyorum .
Bu, bluepill'i zorla öldürürsem bluepill sürecinin yeniden doğmasını önler kill -9
.
Dahası, yanlış PID'nin izlenmesinden dolayı, yeniden başlatma / kapatma sadece askıda kalıyor ve her seferinde makineyi sıfırlamak zorundayım.
Burada sorun ne olabilir?
GÜNCELLEME :
Sorun bugün (3 Mayıs 2015) Ubuntu 14.04.2'de devam ediyor.
Sorun sudo kullanmaktan kaynaklanmıyor. Artık sudo kullanmıyorum. Güncellenmiş uptart yapılandırmam şudur:
description "Start up the bluepill service"
start on runlevel [2]
stop on runlevel [016]
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
expect daemon
script
shared_path=/home/deploy/websites/some_app/shared
bluepill load $shared_path/config/delayed_job.bluepill
end script
Makine önyükleme yaptığında, program iyi yüklenir. Ancak uptart, yukarıda açıklandığı gibi hala yanlış PID'yi izler.
Yorumlarda belirtilen geçici çözüm, askıya alma sorununu çözebilir. Yine de denemedim.
ps aux | grep 990
yapmalı amapstree 990
daha bilgilendirici olabilir.