Cara memulai supervisord secara otomatis di Linux (Ubuntu)

38

Supervisord tidak datang dengan skrip init atau tidak menunjukkan cara memulainya secara otomatis, yaitu. setelah reboot. Saya telah mencoba beberapa skrip /etc/init.d yang disumbangkan pengguna, tetapi semuanya gagal.

Apa yang akan menjadi solusi yang disukai?


sumber
bagaimana maksudmu "gagal"? btw; pertanyaan ini tampaknya menjadi milik serverfault.
erenon
Debian stable memiliki skrip init yang berfungsi, jadi saya kira pertanyaan ini sudah usang.

Jawaban:

40

Sebenarnya, saya menemukan satu yang berfungsi di sini http://gist.github.com/176149 . Untuk menginstalnya:

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

untuk menjalankannya

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

dan untuk menjadwalkannya secara otomatis, lakukan

sudo update-rc.d supervisord defaults

Pastikan pid yang benar di /etc/supervisord.conf yang dipetakan di /etc/init.d/supervisord

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

Berhenti dan Mulai bekerja dengan benar

service supervisord stop
service supervisord start
caesarsol
sumber
Ini khusus debian? Hilang /lib/init/vars.sh dan perbarui-rc.d pada kotak
Centos6.5
1
bagaimana kita tahu ke mana supervisord.conf pergi? / Di mana kita harus meletakkan supervisord.conf?
Weiwei
1
Saya menemukan itu jauh lebih mudah untuk hanya menginstal supervisord dari repo squeeze Debian - melakukan aptitude install supervisord mencakup pengaturan yang benar dari file /etc/init.d dengan tautan, dan menempatkan file config di /etc/supervisor/supervisord.conf
RichVel
2
@RichVel Itu versi alfa, dengan banyak bug di dalamnya. Mungkin sebagian besar dari mereka tidak memengaruhi sistem Anda, tetapi Anda tidak bisa memastikannya, dan tidak memiliki rilis terbaru dapat menggigit Anda di saat apa pun. Periksa sumber repo dan Anda akan melihat bahwa ada lebih dari 320 komit antara versi 3.0a8 dan 3.0b2 github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain
1
@ glarrain - terima kasih untuk head-up dan tautan perbandingan ... Tidak menyadari itu - mengganggu bahwa paket Debian mengambil rilis alfa. Tentunya titik stabil Debian adalah hanya menggunakan versi yang sudah terbukti ...
RichVel
13

Saya membuat skrip pemula untuk ubuntu 9.10

Misalnya saya menginstal penyelia ke lingkungan virtual, kemudian memulai dan mengontrol penyelia dari pemula.

buat file teks /etc/init/supervisord.conf

isinya adalah:

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

Secara otomatis akan memulai pengawas saat boot. Untuk memulai secara manual setelah membuat file .conf, gunakan

sudo mulai pengawas

Untuk menghentikan layanan secara manual, gunakan

sudo stop supervisord

bkc
sumber
2
Terima kasih! Ini adalah one-liner: curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord(Anda harus root)
charlax
3
Selalu periksa inti satu-baris sebelum Anda menjalankannya. Yang ini baik-baik saja, tetapi saya hanya ingin menambahkan tip itu.
Cory Walker
12

Inilah yang saya gunakan pada RHEL 5.4 dan CentOS 5.5

Saya tidak yakin apakah ini tergantung pada beberapa pengaturan konfigurasi di supervisord.conf saya. Tapi sepertinya berhasil OK.

Anda perlu menjalankan perintah berikut setelah menginstalnya

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
Peter Lindqvist
sumber
hanya akan menambahkan bahwa Anda perlu menambahkan izin + x sebelum Anda mencoba menjalankannya: chmod + x /etc/init.d/supervisord
JiminyCricket
Jangan lupa bahwa setelah menjalankan chkconfig --add supervisordAnda juga harus mengaktifkannya untuk level lari yang berbeda melaluichkconfig supervisord --level 345 on
Corey Ballou
2

Ini berfungsi untuk saya di Ubuntu 10.04.3 LTS. Tampaknya juga berfungsi di 8.04:

Tambahkan yang berikut ke /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

Lalu lari:

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

sudo service supervisord start

Tidak ada jawaban lain yang bekerja untuk saya.

shennyg
sumber
1

Saya menambahkan baris ini ke /etc/init.d/supervisord untuk memperbaiki pemrosesan argumen "berhenti":

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

dan ini sangat bagus untuk saya.

rukeba
sumber
1

Pengawas tampaknya sekarang berada dalam repositori yang tepat, jadi tidak perlu membuat file init secara langsung, cukup:

sudo apt-get install supervisor

Anda mungkin ingin terlebih dahulu membersihkan (dan membuat cadangan) file lama Anda sebelum instalasi.

Jeff Bauer
sumber
Anda perlu menyadari bahwa "Beberapa paket ini dapat jauh tertinggal dari versi rilis resmi. Misalnya, Ubuntu 12.04 (dirilis April 2012) menawarkan paket berdasarkan Supervisor 3.0a8 (dirilis Januari 2010)." (dari dokumentasi Supervisord.org supervisord.org/... )
glarrain