如何在Linux(Ubuntu)上自动启动超级用户


38

Supervisord没有附带初始化脚本,也没有指示如何自动启动它。重新启动后。我尝试了一些用户提供的/etc/init.d脚本,但是它们都失败了。

首选的解决方案是什么?


您如何表示“失败”?顺便说一句 这个问题似乎与serverfault有关。
erenon

Debian稳定版具有有效的初始化脚本,因此我想这个问题已经过时了。

Answers:


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

确保在/etc/init.d/supervisord中映射的/etc/supervisord.conf中的pid正确

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

停止并开始正常工作

service supervisord stop
service supervisord start

这是debian特有的吗?在Centos6.5机器上缺少/lib/init/vars.sh和update-rc.d
EoghanM 2012年

1
我们怎么知道supervisord.conf去哪里?/我们应该把supervisord.conf放在哪里?
薇薇

1
我发现仅从Debian squeeze repo中安装超级用户更容易-做aptitude install超级用户包括正确设置带有链接的/etc/init.d文件,并将配置文件放入/etc/supervisor/supervisord.conf
RichVel

2
@RichVel这是一个Alpha版本,其中包含许多错误。也许其中大多数不会影响您的系统,但是您不能确定,没有最新版本会给您带来任何麻烦。检查源仓库,您会发现版本3.0a8和3.0b2之间的提交超过320次github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain 2013年

1
@glarrain-感谢您的平视和比较链接...没意识到-讨厌Debian打包程序发布了alpha版本。当然Debian稳定版的要点是只使用经过验证的版本...
RichVel 2013年

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文件后手动启动,请使用

须藤开始监督

要手动停止服务,请使用

须藤停止监督


2
谢谢!这是一个单行代码:(curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord您需要成为root用户)
charlax 2011年

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 2013年


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现在似乎位于apt信息库中,因此不需要手工制作init文件,只需:

sudo apt-get install supervisor

您可能需要先清理(并备份)旧文件,然后再进行安装。


您需要注意:“其中一些软件包可能远远落后于正式发行版本。例如,Ubuntu 12.04(2012年4月发行)提供了基于Supervisor 3.0a8(2010年1月发行)的软件包。” (从Supervisord的文档supervisord.org/...
glarrain
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.