如何在Elixir中运行无限任务并让mix run不退出持续执行
原因说明
mix run 命令的默认行为是完成应用启动流程后直接终止主进程,不会持续驻留。而 iex -S mix 会启动交互式Shell维持会话进程,因此应用可以持续在后台运行。
解决方案
方法1:单次运行添加参数
直接执行带 --no-halt 标记的命令即可:
mix run --no-halt
该标记会指示Mix启动应用后不终止主进程,你的计数器任务就会持续运行输出。
方法2:配置默认参数(可选)
如果不想每次运行都手动输入参数,可以在 mix.exs 的 project 配置块中添加别名配置:
def project do [ # 保留你原有的项目配置(app、version、elixir等配置项不变) aliases: [ run: "run --no-halt" ] ] end
配置完成后直接执行 mix run 就会默认带上 --no-halt 参数,保持应用持续运行。
额外说明
如果是生产环境部署,建议打包为OTP release运行,release本身默认就会持续驻留进程,不需要额外添加上述参数。
内容的提问来源于stack exchange,提问作者Yevhen Yevsyuhov
相关产品推荐
相关产品推荐

