Elixir 与 Mix 如何制作守护进程?

Posted

技术标签:

【中文标题】Elixir 与 Mix 如何制作守护进程?【英文标题】:How do Elixir with Mix make a daemon? 【发布时间】:2014-07-25 05:02:37 【问题描述】:

Elixir & Mix 都想把服务器做成守护进程。 一直没能找到正确的方法。

另外,我想用erlang reltool。

【问题讨论】:

【参考方案1】:

您可以使用--detached 选项来启动与系统控制台分离的运行时系统。它旨在用于运行守护进程和后台进程:

elixir --detached -S mix run

关于 reltool,您可以使用 exrm,尽管在配置 VM 参数时传递 -detached(单个 -)。运行时系统的完整参数列表可以在这里找到:http://erlang.org/doc/man/erl.html

【讨论】:

您不需要使用 exrm 传递 -detached,因为使用 bin/myapp start 运行您的版本会自动以分离模式运行它。 但是如果主机服务器重启了怎么办?我的 elixir 应用程序会自动重新启动吗?还是我必须手动启动它? @simo,您可以使用supervisord 确保进程在重启时启动【参考方案2】:

从 Elixir 1.9+ 起,您应该使用 --erl "-detached"。像这样:

MIX_ENV=prod elixir --erl "-detached" -S mix run --no-halt

或凤凰:

MIX_ENV=prod elixir --erl "-detached" -S mix phx.server

【讨论】:

使用这些命令将日志放在哪里?

以上是关于Elixir 与 Mix 如何制作守护进程?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 gprof 分析守护进程而不优雅地终止它?

如何使 systemd 杀死或停止重生 rsyslog 守护进程

制作shell脚本守护进程的最佳方法?

守护进程

Linux守护进程详解

linux 如何实现java守护进程编程开发