如何自动启动Linux上的supervisord(Ubuntu)

Supervisord不带有init脚本,也不指示如何自动启动它, 重新启动后。 我试过一些用户提供的/etc/init.d脚本,但都失败了。

什么是首选的解决scheme?

    其实,我find一个在这里工作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/init.d/supervisord中映射的/etc/supervisord.conf中的pid正确

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

    停止并开始正常工作

     service supervisord stop service supervisord start 

    我为Ubuntu 9.10创build了一个新贵的脚本

    比如我把主pipe安装到一个虚拟环境中,然后从新贵开始控制主pipe。

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

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

    sudo开始supervisord

    要手动停止服务,请使用

    sudo stop supervisord

    这是我在RHEL 5.4和CentOS 5.5上使用的

    我不确定这取决于我的supervisord.conf中的一些configuration设置。 但它似乎工作正常。

    安装后需要运行以下命令

     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 

    官方的Supervisor GitHub仓库中有一个Debian / Ubuntu脚本:

    https://github.com/Supervisor/initscripts/blob/master/debian-norrgard

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

    没有其他答案为我工作。

    我将这行添加到/etc/init.d/supervisord来修复“停止”参数处理:

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

    这对我很好。

    Supervisor似乎现在在apt库中,所以不需要手工制作init文件,只需要:

     sudo apt-get install supervisor 

    在安装之前,您可能需要先清理(并备份)旧文件。