如何在 Mongooseim 中通过终端与已经 运行 个实例进行交互?

How to interact with already running instance via terminal in Mongooseim?

我在 ubuntu 服务器上使用来自源代码的 Mongooseim 3.2.0。以下是关注点:

  1. 将 mongooseim 作为服务运行 的最佳方式是什么,以便在 mongooseim 崩溃或系统重启时自动重启?
  2. 如何通过终端与 ubuntu 服务器上已经 运行 的 mongooseim 实例进行交互,例如 "mongooseimctl live"。我的猜测是 运行ning "mongooseimctl live" 将尝试创建另一个实例。我只想查看实时日志和交互,不想为此目的继续滚动长日志文件。

如果上面的答案显而易见但我只想遵循最佳指导,我深表歉意。

mongooseimctl livemongooseimctl foreground 主要用于开发或冒烟测试部署(除非您 运行 在容器内)。对于真实世界的用例,您应该在后台使用 mongooseimctl start.

启动服务器

回到容器 - 容器化应用程序的最佳方法是 运行 它们在前台,因此在容器启动脚本中使用 mongooseimctl foreground.

一旦服务器 运行ning(无论它是如何启动的)附加一个 shell 来解决问题可以用 mongooseimctl debug 来完成。这是出现 Protocol 'inet_tcp': the name mongooseim@localhost seems to be in use by another Erlang node 错误时要使用的命令。如果它是生产环境,请小心 - 您可以通过访问此 shell.

轻松关闭服务器

如果您只是对查看日志感兴趣,而没有像 shell 提供的那样对服务器内部进行交互式访问,那么一个简单的 tail -f /your-configured-mongooseim-log-dir/* 就足够了。


Ubuntu 如今使用 systemd 来管理其服务的生命周期。 systemd .service 文件可以在 https://github.com/esl/MongooseIM/blob/master/tools/pkg/platforms/debian_stretch/files/build/mongooseim.service 找到 - 我们用它来打包成 Debian/Ubuntu .deb 包。