我对 eJabberd 和 Erlang 还很陌生。当我为 ejabberd 开发自定义注册模块时,在某些时候我必须使用 inets 应用程序,因此我在 start
方法中使用 application:start(inets)
启动它。我也想在 stop 方法中停止它,但是我犯了一个小错误,写了 application:stop(inet)
而不是 application:stop(inets)
。显然,这是一个不小的错误!现在我的 ejabberd 在关闭时显然被卡住在某个地方。 ejabberdctl status
返回
The node ejabberd@localhost is stopping with status: started
Failed RPC connection to the node ejabberd@localhost: {'EXIT',
{timeout,
{gen_server,call,
[application_controller,
which_applications]}}}
和ejabberdctl start
返回
ERROR: The ejabberd node 'ejabberd@localhost' is already running.
但我无法使用任何 xmpp Messenger 连接到服务器。有什么办法可以强制它关闭吗?
如果有任何帮助,我将不胜感激!
谢谢
最佳答案
终于!在了解了有关 erlang 节点和 ejabberd 的更多信息后,我发现了一个 bash 脚本 here 这将允许你杀死任何 erlang 节点。运行 epmd -names 后,我确保 ejabberd 运行在“ejabberd”节点上,而不是“ejabberd@localhost”上,我所要做的就是执行
./kill-erlang-node.sh ejabberd
我成功地使用ejabberdctl start
重新启动了ejabberd
哦!显然,停止 inets 是一件疯狂的事情!别这样做!曾经!!
关于ubuntu - 有什么办法强制停止 eJabberd 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27207804/