Як автоматично запустити нагляд в Linux (Ubuntu)


38

Supervisord не постачається зі скриптом init або не вказує, як його запустити автоматично, тобто. після перезавантаження. Я спробував декілька сценаріїв /etc/init.d, внесених користувачем, але всі вони вийшли з ладу.

Що було б кращим рішенням?


як ви маєте на увазі "провал"? btw; це питання, схоже, належить на сервері за замовчуванням.
erenon

Debian stable має працюючі сценарії init, тому я думаю, це питання застаріло.

Відповіді:


40

Власне, я знайшов таку, яка працює тут http://gist.github.com/176149 . Щоб встановити його:

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

запустити його

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

і щоб автоматично запланувати це, зробіть

sudo update-rc.d supervisord defaults

Переконайтеся, що правильний pid в /etc/supervisord.conf, який відображений у /etc/init.d/supervisord

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

Зупиніть і починайте працювати належним чином

service supervisord stop
service supervisord start

Це специфічно для debian? Відсутній /lib/init/vars.sh та update-rc.d у вікні
Centos6.5

1
як ми можемо знати, куди йде supervisord.conf? / Куди слід поставити supervisord.conf?
Вейвей

1
Я виявив, що набагато простіше просто встановити supervisord з репортажу Debian. Виконання встановлення можливостей встановлення включає в себе правильну установку файлу /etc/init.d із посиланнями, а файл конфігурації
RichVel

2
@RichVel Це альфа-версія, в якій багато помилок. Можливо, більшість із них не впливає на вашу систему, але ви не можете бути впевнені, а відсутність останнього випуску може вас вкусити в будь-який момент. Перевірте джерело репо, і ви побачите, що між версіями 3.0a8 та 3.0b2 github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain

1
@glarrain - дякую за посилання head-up та порівняння ... Не зрозумів цього - дратує те, що пакувач Debian взяв альфа-реліз. Безумовно, суть Debian стабільна у тому, щоб використовувати лише перевірені версії ...
RichVel

13

Я створив сценарій для запуску ubuntu 9.10

Наприклад, я встановив супервізора у віртуальне середовище, потім запустив і керував супервізором з початку.

створити текстовий файл /etc/init/supervisord.conf

вміст:

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

Він автоматично запустить супервізора під час завантаження. Щоб вручну запуститись після створення файлу .conf, використовуйте

sudo start supervisord

Щоб зупинити послугу вручну, використовуйте

судо стоп нагляд


2
Спасибі! Ось один-лайнер: curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord(вам потрібно мати корінь)
charlax

3
Завжди перевіряйте суцільні однолистові лайнери, перш ніж запускати їх. Це добре, але я просто хотів додати цю пораду.
Cory Walker

12

Це те, що я використовую на RHEL 5.4 та CentOS 5.5

Я не впевнений, що це залежно від деяких параметрів конфігурації в моєму supervisord.conf. Але це, здається, працює нормально.

Після установки її потрібно виконати наступну команду

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

додамо лише, що вам потрібно додати дозволи + x, перш ніж спробувати запустити його: chmod + x /etc/init.d/supervisord
JiminyCricket

Не забувайте, що після запуску chkconfig --add supervisordвам також потрібно включити його для різних рівнів запуску черезchkconfig supervisord --level 345 on
Corey Ballou


2

Це працює для мене на Ubuntu 10.04.3 LTS. Він також працює в 8.04:

Додайте до /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

Потім запустіть:

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

sudo service supervisord start

Жодна з інших відповідей не працювала на мене.


1

Я додав ці рядки в /etc/init.d/supervisord, щоб виправити обробку аргументів "стоп":

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

і це чудово працює для мене.


1

Схоже, Supervisor зараз знаходиться в підходящому сховищі, тому не потрібно створювати файли init вручну, просто:

sudo apt-get install supervisor

Ви можете спочатку очистити (та створити резервну копію) своїх старих файлів перед встановленням.


Потрібно знати, що "Деякі з цих пакетів можуть значно відставати від офіційної версії випуску. Наприклад, Ubuntu 12.04 (випущена у квітні 2012 р.) Пропонує пакет на основі Supervisor 3.0a8 (вийшов у січні 2010 року)." (з документації Supervisord supervisord.org/… )
glarrain
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.