Saya awalnya mengajukan pertanyaan ini di StackOverflow. Kemudian menyadari bahwa ini mungkin tempat yang lebih baik.
Saya memiliki pengaturan bluepill untuk memantau proses delay_job saya. (Aplikasi Ruby On Rails)
Menggunakan Ubuntu 12.10.
Saya memulai dan memantau layanan bluepill itu sendiri menggunakan Ubuntu upstart
. Konfigurasi pemula saya di bawah ( /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
Saya juga sudah mencoba dengan expect fork
bukan expect daemon
. Saya juga mencoba menghapus expect...
garis sepenuhnya.
Saat mesin dinyalakan, bluepill mulai menyala dengan baik.
$ ps aux | grep blue
root 1154 0.6 0.8 206416 17372 ? Sl 21:19 0:00 bluepilld: <app_name>
PID dari proses bluepill adalah 1154 di sini. Tapi upstart
sepertinya melacak PID yang salah. Ini melacak PID yang tidak ada.
$ initctl status bluepill
bluepill start/running, process 990
Saya pikir ini melacak PID dari sudo
proses yang memulai proses bluepill.
Ini mencegah proses bluepill dari respawned jika saya secara paksa membunuh bluepill menggunakan kill -9
.
Selain itu, saya pikir karena PID yang salah dilacak, reboot / shutdown hanya hang dan saya harus mengatur ulang mesin setiap kali.
Apa yang bisa menjadi masalah di sini?
PEMBARUAN :
Masalahnya masih ada sampai hari ini (3 Mei 2015) di Ubuntu 14.04.2.
Masalahnya bukan karena menggunakan sudo. Saya tidak menggunakan sudo lagi. Konfigurasi pemula baru saya adalah:
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
Saat mesin melakukan boot, program memuat dengan baik. Tetapi pemula masih melacak PID yang salah, seperti dijelaskan di atas.
Solusi yang disebutkan dalam komentar dapat memperbaiki masalah menggantung. Saya belum mencobanya.
ps aux | grep 990
harus melakukannya tetapipstree 990
mungkin lebih informatif.