này script bắt đầu RabbitMQ như là một quá trình nền (sử dụng '&') gây ra một tập tin pid được cập nhật/tạo ra (xem 'chờ' dưới http://www.rabbitmq.com/man/rabbitmqctl.1.man.html).
Sau khi thỏ đã được bắt đầu, một vòng lặp được sử dụng để xác minh rằng pid vẫn đang chạy. Nếu thỏ bị treo hoặc bị tắt bằng tay (bên ngoài người giám sát) thì kịch bản sẽ thoát ra với 1 và người giám sát sẽ tiếp quản.
echo >> ./rmq.txt tập tin là có cho mục đích gỡ lỗi và có thể được nhận xét trong sản xuất (tôi sử dụng này để theo dõi tình trạng khởi động/tắt máy/chết).
người giám sát hài lòng vì nó có thể thấy một quy trình đang chạy và EXIT sẽ kích hoạt chức năng stop_rmq gọi là 'rabbitmqctl stop' để tắt máy.
#!/bin/bash
# Script to manage RMQ with supervisord
# Shut down rmq
function stop_rmq {
echo "Stopping RabbitMQ..."
echo "Stopping RabbitMQ..." >> ./rmq.txt
rabbitmqctl stop
echo "RabbitMQ stopped"
echo "RabbitMQ stopped" >> ./rmq.txt
#exit 0
}
# Set up the trap
#trap stop_rabbit TERM KILL HUP INT SIGTERM SIGKILL SIGHUP SIGINT
trap stop_rmq exit
# Start rmq
echo "Starting RabbitMQ..."
echo "Starting RabbitMQ..." >> ./rmq.txt
# Start Rabbitmq in the background (causes the pid file to be updated)
# Note that the pid file location can be overridden with the rmq 'RABBITMQ_PID_FILE' variable
/usr/sbin/rabbitmq-server &
rabbitmqctl wait /var/lib/rabbitmq/mnesia/[email protected]$HOSTNAME.pid
echo "RabbitMQ Started"
echo "RabbitMQ Started" >> ./rmq.txt
while true; do
#ps $(cat /var/lib/rabbitmq/mnesia/[email protected]$HOSTNAME.pid)
ps -o pid,cmd,etime $(cat /var/lib/rabbitmq/mnesia/[email protected]$HOSTNAME.pid)
if (($? > 0)); then
echo "RabbitMQ Died"
echo "RabbitMQ Died" >> ./rmq.txt
exit 1
fi
#echo "Sleeping..."
sleep 10
done
Đây là sản lượng tạo ra bởi các kịch bản để supervisord:
[email protected]:/# supervisorctl tail rmq
Starting RabbitMQ...
Waiting for [email protected] ...
pid is 45220 ...
RabbitMQ 3.3.5. Copyright (C) 2007-2014 GoPivotal, Inc.
## ## Licensed under the MPL. See http://www.rabbitmq.com/
## ##
########## Logs: /var/log/rabbitmq/[email protected]
###### ## /var/log/rabbitmq/[email protected]
##########
Starting broker... completed with 0 plugins.
...done.
RabbitMQ Started
PID CMD ELAPSED
45220 /usr/lib/erlang/erts-6.1/bi 00:05
PID CMD ELAPSED
45220 /usr/lib/erlang/erts-6.1/bi 00:15
PID CMD ELAPSED
45220 /usr/lib/erlang/erts-6.1/bi 00:25
PID CMD ELAPSED
45220 /usr/lib/erlang/erts-6.1/bi 00:35
PID CMD ELAPSED
45220 /usr/lib/erlang/erts-6.1/bi 00:45
PID CMD ELAPSED
45220 /usr/lib/erlang/erts-6.1/bi 00:55
PID CMD ELAPSED
45220 /usr/lib/erlang/erts-6.1/bi 01:05
PID CMD ELAPSED
45220 /usr/lib/erlang/erts-6.1/bi 01:15
PID CMD ELAPSED
45220 /usr/lib/erlang/erts-6.1/bi 01:25
Nguồn
2014-08-22 14:39:27
này đã làm việc một phần cho tôi. Tôi đã tạo ra một ý chính với giải pháp cuối cùng của mình: https://gist.github.com/caioariede/342a583f75467509ad42 – caio
@caio mặc dù giải pháp của tôi có hiệu quả đối với tôi, tôi nên cảm ơn bạn vì giải pháp của bạn. –