Cách tự động khởi động giám sát trên Linux (Ubuntu)


38

Giám sát không đi kèm với một tập lệnh init hoặc không cho biết làm thế nào để bắt đầu tự động, tức là. sau khi khởi động lại. Tôi đã thử một số tập lệnh /etc/init.d do người dùng đóng góp, nhưng tất cả đều thất bại.

Điều gì sẽ là giải pháp ưa thích?


làm thế nào để bạn có nghĩa là "thất bại"? btw; Câu hỏi này dường như thuộc về serverfault.
erenon

Ổn định Debian có các tập lệnh init hoạt động, vì vậy tôi đoán câu hỏi này đã lỗi thời.

Câu trả lời:


40

Trên thực tế, tôi đã tìm thấy một hoạt động ở đây http://gist.github.com/176149 . Để cài đặt nó:

sudo curl https://gist.github.com/howthebodyworks/176149/raw/88d0d68c4af22a7474ad1d011659ea2d27e35b8d/supervisord.sh > /etc/init.d/supervisord

để chạy nó

sudo chmod +x /etc/init.d/supervisord

và để tự động lên lịch, hãy làm

sudo update-rc.d supervisord defaults

Đảm bảo pid chính xác trong /etc/supervisord.conf được ánh xạ trong /etc/init.d/supervisord

example: pidfile=/var/run/supervisord.pid

Dừng lại và bắt đầu làm việc đúng cách

service supervisord stop
service supervisord start

Đây là cụ thể của debian? Thiếu /lib/init/vars.sh và update-rc.d trên hộp
Centos6.5

1
Làm thế nào để chúng ta biết giám sát đi đâu? / Chúng ta nên đặt giám sát ở đâu?
Weiwei

1
Tôi thấy việc cài đặt giám sát từ Debian nén lại dễ dàng hơn nhiều - thực hiện giám sát cài đặt aptitude bao gồm thiết lập đúng tệp /etc/init.d với các liên kết và đặt tệp cấu hình vào /etc/supervisor/supervisord.conf
RichVel

2
@RichVel Đó là phiên bản alpha, có nhiều lỗi trong đó. Có thể hầu hết trong số chúng không ảnh hưởng đến hệ thống của bạn, nhưng bạn không thể chắc chắn, và việc không có bản phát hành mới nhất có thể cắn bạn bất cứ lúc nào. Kiểm tra repo nguồn và bạn sẽ thấy rằng có hơn 320 cam kết giữa các phiên bản 3.0a8 và 3.0b2 github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain

1
@glarrain - cảm ơn vì liên kết so sánh và so sánh ... Không nhận ra điều đó - thật khó chịu khi trình đóng gói Debian đã phát hành bản alpha. Chắc chắn rằng điểm ổn định của Debian là chỉ sử dụng các phiên bản đã được chứng minh ...
RichVel

13

Tôi đã tạo một kịch bản mới nhất cho Ubuntu 9.10

Ví dụ, tôi đã cài đặt trình giám sát vào một môi trường ảo, sau đó khởi động và kiểm soát trình giám sát từ lúc bắt đầu.

tạo một tệp văn bản /etc/init/supervisord.conf

nội dung là:

description     "supervisord"

start on runlevel [345]
stop on runlevel [!345]

expect fork
respawn

exec /misc/home/bkc/Python_Environments/java2/supervisord/bin/supervisord -c /misc/home/bkc/Python_Environments/java2/supervisord/work/supervisord.conf

Nó sẽ tự động bắt đầu giám sát khi khởi động. Để bắt đầu thủ công sau khi tạo tệp .conf, hãy sử dụng

sudo bắt đầu giám sát

Để tự dừng dịch vụ, hãy sử dụng

sudo dừng giám sát


2
Cảm ơn! Đây là một lớp lót: curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord(bạn cần phải root)
charlax

3
Luôn luôn kiểm tra một lớp lót trước khi bạn chạy chúng. Điều này là tốt, nhưng tôi chỉ muốn thêm mẹo đó.
Cory Walker

12

Đây là những gì tôi sử dụng trên RHEL 5.4 và CentOS 5.5

Tôi không chắc chắn rằng nó phụ thuộc vào một số cài đặt cấu hình trong giám sát của tôi. Nhưng nó có vẻ hoạt động tốt.

Bạn cần chạy lệnh sau khi cài đặt nó

chkconfig --add supervisord

[/etc/rc.d/init.d/supervisord]

#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord

# Source init functions
. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"

start()
{
        echo -n $"Starting $prog: "
        daemon $prog_bin --pidfile $PIDFILE
        [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
        echo
}

stop()
{
        echo -n $"Shutting down $prog: "
        [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
        echo
}

case "$1" in

  start)
    start
  ;;

  stop)
    stop
  ;;

  status)
        status $prog
  ;;

  restart)
    stop
    start
  ;;

  *)
    echo "Usage: $0 {start|stop|restart|status}"
  ;;

esac

sẽ chỉ thêm rằng bạn cần thêm quyền + x trước khi thử chạy nó: chmod + x /etc/init.d/supervisord
JiminyCricket

Đừng quên rằng sau khi chạy, chkconfig --add supervisordbạn cũng cần kích hoạt nó cho các cấp độ chạy khác nhau thông quachkconfig supervisord --level 345 on
Corey Ballou


2

Điều này đang làm việc với tôi trên Ubuntu 10.04.3 LTS. Nó cũng xuất hiện để hoạt động trong 8.04:

Thêm vào đây /etc/init.d/supervisord

#! /bin/bash -e

SUPERVISORD=/usr/local/bin/supervisord
PIDFILE=/tmp/supervisord.pid
OPTS="-c /etc/supervisord.conf"

test -x $SUPERVISORD || exit 0

. /lib/lsb/init-functions

export PATH="${PATH:+$PATH:}/usr/local/bin:/usr/sbin:/sbin"

case "$1" in
  start)
    log_begin_msg "Starting Supervisor daemon manager..."
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $SUPERVISORD -- $OPTS || log_end_msg 1
    log_end_msg 0
    ;;
  stop)
    log_begin_msg "Stopping Supervisor daemon manager..."
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE || log_end_msg 1
    log_end_msg 0
    ;;

  restart|reload|force-reload)
    log_begin_msg "Restarting Supervisor daemon manager..."
    start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $SUPERVISORD -- $OPTS || log_end_msg 1
    log_end_msg 0
    ;;

  *)
    log_success_msg "Usage: /etc/init.d/supervisor
{start|stop|reload|force-reload|restart}"
    exit 1
esac

exit 0

Sau đó chạy:

sudo chmod +x /etc/init.d/supervisord
sudo update-rc.d supervisord defaults

sudo service supervisord start

Không có câu trả lời nào khác làm việc cho tôi.


1

Tôi đã thêm dòng này vào /etc/init.d/supervisord để sửa lỗi xử lý đối số "dừng":

do_stop()
{
    /usr/local/bin/supervisorctl stop all
    /usr/local/bin/supervisorctl shutdown
    # Return
    ...

và điều này làm việc tuyệt vời cho tôi.


1

Trình giám sát dường như hiện đang ở trong kho apt, vì vậy không cần thiết phải tạo các tệp init thủ công, chỉ cần:

sudo apt-get install supervisor

Trước tiên, bạn có thể muốn dọn sạch (và sao lưu) các tệp cũ của mình trước khi cài đặt.


Bạn cần lưu ý rằng "Một số trong các gói này có thể tụt hậu đáng kể so với phiên bản phát hành chính thức. Ví dụ: Ubuntu 12.04 (phát hành tháng 4 năm 2012) cung cấp gói dựa trên Trình giám sát 3.0a8 (phát hành tháng 1 năm 2010)." (từ tài liệu của Giám sát viên giám
sát.org / Từ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.