对于非 Node.js 应用程序,应该用什么来代替 PM2?

对于非 Node.js 应用程序,应该用什么来代替 PM2?

我正在考虑从 Node.js 切换到另一种编程语言(Elixir)。在 Node 中,我使用 PM2 作为进程管理器。现在,问题是,我不想使用 PM2 进行进程管理,因为我需要 Node 作为依赖项,而 PM2 更适合 Node.js 应用程序进程(尽管我知道你可以用它运行非 Node 应用程序)。

所以,我的问题是:我可以使用什么来替代非 Node.js 应用程序的 PM2?

我需要此工具具备的功能:

  • 列出进程并获取其统计数据(CPU、内存等)
  • 启动/重启/删除进程的任务
  • 崩溃时自动重启进程
  • 日志显示和存储
  • (可选)一些监控工具(例如 Prometheus)
  • (可选)文件更改时自动重启进程

答案1

任何其他流程管理器都会带有自己的一套支持/底层语言和框架,例如 Python 等,因此没有区别。

如果您已经了解 PM2 并且知道如何维护 Node,那么请按照文档中描述的方式使用 PM2 与非 Node 应用程序一起使用:https://pm2.keymetrics.io/docs/usage/process-management/#start-any-process-type

答案2

几乎任何服务(包括您以前使用 pm2 运行的服务)都可以从 systemd 单元运行。而且无论如何,这最好集成到 Linux 发行版中。大多数语言/Web 应用框架都会提供您可以使用的示例 systemd 单元。

例如,如果你使用 Elixir 编程,你很可能使用 Phoenix 框架,你可以找到systemd 单元示例以及 Elixir 论坛上的帮助。

相关内容