erlang - 如何通过 Mongooseim 中的终端与已经运行的实例进行交互?
问题描述
我正在使用 ubuntu 服务器上源代码中的 Mongooseim 3.2.0。以下是关注:
- 将 mongooseim 作为服务运行以便在 mongooseim 崩溃或系统重新启动时自动重新启动的最佳方法是什么?
- 如何通过终端与 ubuntu 服务器上已经运行的 mongooseim 实例进行交互,例如“mongooseimctl live”。我的猜测是运行“mongooseimctl live”会尝试创建另一个实例。我只想查看实时日志和交互,不想为此目的继续滚动长日志文件。
如果上面的答案很明显,我很抱歉,但只是想遵循最好的指导。
解决方案
mongooseimctl live
或mongooseimctl foreground
主要用于开发或冒烟测试部署(除非您在容器内运行)。对于现实世界的用例,您应该在后台使用mongooseimctl start
.
回到容器——容器化应用程序的最佳方法是在前台运行它们,因此在容器启动脚本中使用mongooseimctl foreground
.
一旦服务器运行(无论它是如何启动的),就可以使用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 来管理其服务的生命周期。.service
可以在https://github.com/esl/MongooseIM/blob/master/tools/pkg/platforms/debian_stretch/files/build/mongooseim.service找到一个 systemd文件- 我们使用它来打包到 Debian/Ubuntu .deb包。
推荐阅读
- apache-spark - 列出纱线应用作业
- c - 与 const 和 non-const 成员联合
- python - 电报机器人从文件发送随机图像
- node.js - Parcel SemVer 错误
- javascript - 将对象文件列表从 javascript 反序列化为 c#
- python - 当输入大小小于 PyTorch 中的目标大小时,F.adaptive_max_pool 如何工作?
- java - 阵列中最长的高原。我究竟做错了什么?
- html - 当浏览器下载 CSS 文件时,chrome 中的渲染引擎会发生什么?
- postgresql - PostgreSQL:如何运行从 SQL SELECT 语句返回的 ALTER 查询
- sql - 使用 SQL 查询获取从今天开始的最后 45 天