Ban đầu tôi đã hỏi câu hỏi này trên StackOverflow. Sau đó nhận ra rằng đây có lẽ là một nơi tốt hơn.
Tôi có thiết lập bluepill để theo dõi các quá trình delay_job của mình. (Ứng dụng Ruby On Rails)
Sử dụng Ubuntu 12.10.
Tôi đang bắt đầu và theo dõi chính dịch vụ bluepill bằng Ubuntu upstart
. Cấu hình khởi động của tôi là dưới đây ( /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
Tôi cũng đã thử với expect fork
thay vì expect daemon
. Tôi cũng đã cố gắng loại bỏ expect...
hoàn toàn dòng.
Khi máy khởi động, bluepill khởi động tốt.
$ ps aux | grep blue
root 1154 0.6 0.8 206416 17372 ? Sl 21:19 0:00 bluepilld: <app_name>
PID của quá trình bluepill là 1154 ở đây. Nhưng upstart
dường như đang theo dõi các PID sai. Nó đang theo dõi một PID không tồn tại.
$ initctl status bluepill
bluepill start/running, process 990
Tôi nghĩ rằng nó đang theo dõi PID của sudo
quá trình bắt đầu quá trình bluepill.
Điều này đang ngăn quá trình bluepill không được hồi sinh nếu tôi mạnh tay giết bluepill bằng cách sử dụng kill -9
.
Hơn nữa, tôi nghĩ rằng do PID bị theo dõi sai, khởi động lại / tắt máy chỉ bị treo và tôi phải cứng thiết lập lại máy mỗi lần.
Điều gì có thể là vấn đề ở đây?
CẬP NHẬT :
Vấn đề vẫn còn cho đến ngày hôm nay (3/5/2015) trên Ubuntu 14.04.2.
Vấn đề không phải là do sử dụng sudo. Tôi không sử dụng sudo nữa. Cấu hình mới nhất được cập nhật của tôi là:
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
Khi máy khởi động, chương trình tải lên tốt. Nhưng mới bắt đầu vẫn theo dõi sai PID, như được mô tả ở trên.
Cách giải quyết được đề cập trong các ý kiến có thể khắc phục vấn đề treo. Tôi đã không thử nó, mặc dù.
ps aux | grep 990
nên làm điều đó nhưngpstree 990
có thể nhiều thông tin hơn.