如何在 Linux(Ubuntu)上自动启动 Supervisord

如何在 Linux(Ubuntu)上自动启动 Supervisord

Supervisord 没有附带 init 脚本,或者没有指示如何自动启动(即在重启后)。我尝试了一些用户提供的 /etc/init.d 脚本,但都失败了。

什么是首选的解决方案?

答案1

实际上,我在这里找到了一个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

确保 /etc/supervisord.conf 中的 pid 正确,该 pid 映射到 /etc/init.d/supervisord

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

停止和启动正常工作

service supervisord stop
service supervisord start

答案2

我为 ubuntu 9.10 创建了一个 upstart 脚本

例如,我将supervisor安装到虚拟环境中,然后从upstart启动和控制supervisor。

创建一个文本文件 /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

它将在启动时自动启动 Supervisor。要在创建 .conf 文件后手动启动,请使用

sudo 启动supervisord

要手动停止服务,请使用

sudo 停止监督员

答案3

这是我在 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

答案4

这在 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

其他答案对我都不起作用。

相关内容