ubuntu 服务器 16.04:无法让主管自动启动

qin*_*126 45 ubuntu supervisord

我在 ubuntu 服务器 16.04 上安装了主管。

$ sudo apt-get install supervisor
$ sudo update-rc.d supervisor defaults
Run Code Online (Sandbox Code Playgroud)

重启后supervisor没有自动启动。检查状态:

qinking126@nas:~$ sudo service supervisor status
[sudo] password for qinking126:
? supervisor.service - Supervisor process control system for UNIX
   Loaded: loaded (/lib/systemd/system/supervisor.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: http://supervisord.org
Run Code Online (Sandbox Code Playgroud)

我不确定为什么它不活动(死)。我需要检查什么才能修复它?

xol*_*lox 62

我确信这个问题是 Ubuntu 16.04 中 Supervisor 包中的一个打包错误,它似乎是由切换到 systemd 引起的:

  • 此问题已在问题 735 中的 Supervisor 项目的问题跟踪器(无法修复任何问题)的上游报告。

  • 几天前我被这个问题咬了一口,惊讶地发现这个问题从未报告给包维护者,即使 Ubuntu 16.04 已经发布了很长时间,这打破了向后兼容性和预期行为。这就是为什么我决定在bug 1594740 中向包维护者报告这个问题。

我在bug 1594740中记录了一个简单的解决方法,它不需要创建任何配置文件——你只需要在安装包后启用并启动 Supervisor 守护进程:

# Make sure Supervisor comes up after a reboot.
sudo systemctl enable supervisor

# Bring Supervisor up right now.
sudo systemctl start supervisor
Run Code Online (Sandbox Code Playgroud)

我不太确定这是否会在 Ubuntu 16.04 中得到修复,但至少现在有一个集中的地方来收集投诉和记录解决方法(在bug 1594740 中而不是issue 735 中)。

如果有人被此问题困扰,请考虑在错误 1594740 中表达您的担忧,以说服软件包维护人员解决此问题。谢谢!

更新 (2017-03-24):昨天,由于错误 1594740,此问题的修复程序已发布xenial-updates,因此新安装不应再遇到此问题。


小智 10

请参见此处在启动时自动运行 supervisord

  1. 根据系统创建supervisord.service文件/usr/lib/systemd/system并将以下内容放入此文件中:

    初始化脚本

  2. sudo systemctl daemon-reload

  3. sudo systemctl enable supervisord.service

  4. sudo systemctl start supervisord.service


anj*_*505 5

我已经删除了主管并重新安装。然后它对我有用。

sudo apt-get purge supervisor
sudo apt-get install supervisor
cp path/to/file.conf /etc/supervisor/conf.d/
sudo supervisorctl reread
sudo supervisorctl update
Run Code Online (Sandbox Code Playgroud)


小智 1

这是一个文件示例,您可以将其放入 /lib/systemd/system/

[Unit]
Description=Supervisord Service

[Service]
Restart=on-failure
RestartSec=42s
User=ubuntu
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisord.conf

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)