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
在安装之前,您可能需要先清理(并备份)旧文件。