opensipsctl start gives an error: opensips.pid does not exist

opensipsctl start gives an error: opensips.pid does not exist

当我 运行 opensipsctl start 命令 start opensips 那次我得到一个错误。

ERROR: PID file /var/run/opensips.pid does not exist -- OpenSIPS start failed

所以请帮我解决一下。

打开 opensipsctl,它包含文件 opensipsctlrc,它定义 $PID_FILE 为 /var/run/opensips.pid

然后在 opensipsctl 中,当您 运行 开始其中一项检查时是..

    if [ ! -s $PID_FILE ] ; then
            echo
            merr "PID file $PID_FILE does not exist -- OpenSIPS start failed"
            exit 1
    fi

也就是说,如果检查“/var/run/opensips.pid 是否存在且大于 0 字节”失败,则回显上述错误。

这意味着没有创建文件。

如果你只看那条线的上方,它确实..

    if [ $SYSLOG = 1 ] ; then
            $OSIPSBIN -P $PID_FILE $STARTOPTIONS 1>/dev/null 2>/dev/null
    else
            $OSIPSBIN -P $PID_FILE -E $STARTOPTIONS
    fi

这是 opensips 真正开始的地方。如果您还没有,我建议您将以下内容添加到您的 opensips.cfg..

# Logging
debug=6
log_stderror=no               
log_facility=LOG_LOCAL0

..现在一切都会在启动时记录到 /var/log/syslog。

再次尝试启动,然后查看该日志以获取有关所发生情况的信息。

要检查的另一件事是,您 运行ning opensips 的用户是否有权访问它试图在其中创建 pid 文件的目录。

我遇到了同样的错误,这也让我抓狂。我设法将其归结为两件事之一 - 我都有!

1/ OpenSIPS 配置文件中的错误配置。 journalctl -xe 应该可以告诉你错误是什么

2/ 其他东西正在侦听您尝试侦听的端口

对于 2,你可以尝试下面的方法,如果你有 Ubuntu,看看是否有任何东西已经在监听那个端口

lsof -i :5060

我能够通过以下步骤查看日志并解决问题

在 opensips.cfg 中设置 log_level=4 以在 /var/log/syslog

中查看调试日志

调试在 2.4 及更高版本中已弃用。 不同日志级别可以参考here