我正在尝试配置 Supervisor用于控制 FreeSWITCH .以下是目前在supervisord.conf
中的配置。
[program:freeswitch]
command=/usr/local/freeswitch/bin/freeswitch -nc -u root -g root
numprocs=1
stdout_logfile=/var/log/supervisor/freeswitch.log
stderr_logfile=/var/log/supervisor/freeswitch.log
autostart=true
autorestart=true
startsecs=10
; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600
; When resorting to send SIGKILL to the program to terminate it
; send SIGKILL to its whole process group instead,
; taking care of its children as well.
killasgroup=true
当我使用 supervisord
命令启动 supervisor 时,它会毫无错误地启动 freeswitch 进程。但是当我尝试使用 supervisorctl
命令重新启动 freeswitch 时,它不起作用并出现以下错误。
freeswitch: ERROR (not running)
freeswitch: ERROR (abnormal termination)
我无法在日志 (/var/log/supervisor/freeswitch.log) 中看到任何错误报告。但是我看到以下内容:
1773 Backgrounding.
1777 Backgrounding.
1782 Backgrounding.
好像是启动了freeswitch的三个进程。这不是错了吗?
有人可以指出这里的问题并在需要时提供正确的配置吗?
supervisor
要求运行的程序不要fork到后台;毕竟它的创建是为了作为后台进程运行那些无法或难以正确编写守护程序代码的程序。因此,对于您使用 supervisor 运行的每个程序,请确保它不会在后台 fork 。
在freeswitch的情况下,只需删除-nc
选项即可使其在前台运行; supervisor 将适本地引导标准流并在它崩溃时重新启动进程。
我是一名优秀的程序员,十分优秀!