【发布时间】:2018-09-20 09:31:50
【问题描述】:
我正在尝试创建一个可以在同一网络上的两台不同机器上运行的应用程序,当其中一个应用程序崩溃时,我想使用 erlang 心跳系统使其重新启动。我该怎么做?
我已经阅读了文档,但还没有弄清楚如何在实践中实现这一点。
谢谢
【问题讨论】:
我正在尝试创建一个可以在同一网络上的两台不同机器上运行的应用程序,当其中一个应用程序崩溃时,我想使用 erlang 心跳系统使其重新启动。我该怎么做?
我已经阅读了文档,但还没有弄清楚如何在实践中实现这一点。
谢谢
【问题讨论】:
您是否专门阅读了http://erlang.org/doc/man/heart.html 并尝试按照那里的说明进行操作?特别是,您必须首先将环境变量 HEART_COMMAND 设置为完整的命令行以用于重新启动系统。
为了使这更容易,您可以使用这样的启动脚本:
#!/bin/sh
erl -detached -heart -env HEART_COMMAND "$0 $@" -env HEART_BEAT_TIMEOUT 20 -sname mynode
在某些环境(例如嵌入式系统)中,您可能更喜欢完全重新启动操作系统,并且可以简单地运行以下内容:
#!/bin/sh
erl -detached -heart -env HEART_COMMAND "reboot" -env HEART_BEAT_TIMEOUT 20 -sname mynode
【讨论】: