Bash
centos 7.1 - 如果使用 systemctl 執行,supervisord 將終止
所以我有一個奇怪的問題,我整天都在敲我的頭。我有一個
centos 7.1
withsupervisord 3.2.0
安裝。如果我執行supervisor
withsystemctl
,它會執行,然後在幾秒鐘後自行關閉。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