Bash

centos 7.1 - 如果使用 systemctl 執行,supervisord 將終止

  • December 8, 2015

所以我有一個奇怪的問題,我整天都在敲我的頭。我有一個centos 7.1withsupervisord 3.2.0安裝。如果我執行supervisorwith systemctl,它會執行,然後在幾秒鐘後自行關閉。

sudo systemctl start supervisord
sudo systemctl enable supervisord

但是,如果我手動執行它,例如:

sudo /usr/bin/supervisord

它會工作得很好。以下是文件:

# /usr/lib/systemd/system/supervisord.service
[Unit]
Description=Supervisor daemon

[Service]
ExecStart=/usr/bin/supervisord
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

# /etc/supervisord.conf
[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)

[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10           ; (num of main logfile rotation backups;default 10)
loglevel=info                ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false               ; (start in foreground if true;default false)
minfds=1024                  ; (min. avail startup file descriptors;default 1024)
minprocs=200                 ; (min. avail process descriptors;default 200)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket

日誌記錄:

Dec 07 22:32:07 supervisord[2421]: /usr/lib/python2.7/site-packages/supervisor/options.py:296: UserWarning: Supervisord is running as root and it is searchi
Dec 07 22:32:07 supervisord[2421]: 'Supervisord is running as root and it is searching '
Dec 07 22:32:07 supervisorctl[2425]: Shut down
Dec 07 22:58:29 supervisorctl[4181]: Shut down
Dec 07 22:59:35 supervisorctl[4316]: Shut down
Dec 07 22:59:43 supervisorctl[4337]: Shut down

systemctl 狀態:

supervisord.service - Supervisor daemon
Loaded: loaded (/usr/lib/systemd/system/supervisord.service; enabled)
Active: inactive (dead) since Mon 2015-12-07 22:59:43 UTC; 7min ago
Process: 4337 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS)
Process: 4333 ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf (code=exited, status=0/SUCCESS)
Main PID: 4333 (code=exited, status=0/SUCCESS)
Dec 07 22:32:07 supervisord[2421]: /usr/lib/python2.7/site-packages/supervisor/options.py:296: UserWarning:
Dec 07 22:32:07 supervisord[2421]: 'Supervisord is running as root and it is searching '
Dec 07 22:32:07 supervisorctl[2425]: Shut down

正如Mike Naberezny所指出的,在這裡,只需添加Type=forking到以下Service部分supervisord.service

[Service]
Type=forking
ExecStart=/usr/bin/supervisord
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload

引用自:https://unix.stackexchange.com/questions/247995