[erlang-questions] HEART

Dmitry Kolesnikov <>
Tue May 12 19:35:21 CEST 2015


Hello,

This is business as usual. If you generate myapp release and deploy it to /usr/local then you can create very simple script to init.d

See it here
https://github.com/fogfish/hyperion/blob/master/rel/deploy.sh#L19

e.g.

#!/bin/bash
export HOME=/root
/usr/local/myapp/bin/myapp $1

- Dmitry


> On 12 May 2015, at 20:28, Roberto Ostinelli <> wrote:
> 
> Hi Dmitry,
> I am using rebar to generate the release. Thing is: how do you make the generated script start at boot time of, say, ubuntu? And more importantly, how do you stop it since the pid is unknown to the launching script?
> 
> 
> 
> On 12/mag/2015, at 18:48, Dmitry Kolesnikov < <mailto:>> wrote:
> 
>> Hello Roberto,
>> 
>> The rebar makes a dirty work to generate "node release” and necessary bootstrap scripts.  Please check create-node command and concept of erlang releases: 
>> https://github.com/rebar/rebar/wiki/Rebar-commands <https://github.com/rebar/rebar/wiki/Rebar-commands>
>> http://www.erlang.org/doc/man/reltool.html <http://www.erlang.org/doc/man/reltool.html>
>> 
>> It generates script looks something similar to this one. It also hooks the heart to watchdog the node.  
>> https://github.com/fogfish/hyperion/blob/master/rel/files/hyperion <https://github.com/fogfish/hyperion/blob/master/rel/files/hyperion>
>> 
>> Personally, I am following an idea to package the application to release and ship it to destination hosts.
>> Long time ago, I’ve made an empty “erlang release” project as show-case to study and debug various scenarios. You might look on it here:
>> 
>> https://github.com/fogfish/hyperion <https://github.com/fogfish/hyperion>  
>> 
>> Best Regards, 
>> Dmitry
>> 
>> 
>>> On 12 May 2015, at 19:07, Roberto Ostinelli < <mailto:>> wrote:
>>> 
>>> Fair enough, however at this point I cannot even a single one of these systems to simply START *and* STOP an Erlang release.
>>> I can easily start it (on ubuntu, `sudo service myapp start`) but the STOP command will always fail. That's because the init script cannot get a grasp of the BEAM process' pid (for some reason), hence it cannot stop it.
>>> 
>>> Any ideas on how to do that?
>>> 
>>> 
>>> On Tue, May 12, 2015 at 5:52 PM, Jesper Louis Andersen < <mailto:>> wrote:
>>> 
>>> On Mon, May 11, 2015 at 9:13 PM, Roberto Ostinelli < <mailto:>> wrote:
>>> In non-erlang systems, I would have standard watchdogs that launch an application on OS boot, and then monitor it and relaunch it if necessary.
>>> 
>>> The heart system in Erlang is a simple watchdog, mostly used if you nothing else that will restart your application. In an SysV init system, there is no automatic watching and restart. In RcNG in FreeBSD, there is no restart. In OpenBSDs rc, there is no automatic restart.
>>> 
>>> But as you say, many modern init systems also provides watching of the applications it starts, and in that case I wouldn't run with heart enabled. Better to let the system above handle it, and plug into its monitoring/reporting and so on.
>>> 
>>> Heart is very useful if you start nodes outside the control of the system watchdog though. In that case, they won't be restarted, and you can run heart on those.
>>> 
>>> 
>>> -- 
>>> J.
>>> 
>>> _______________________________________________
>>> erlang-questions mailing list
>>>  <mailto:>
>>> http://erlang.org/mailman/listinfo/erlang-questions <http://erlang.org/mailman/listinfo/erlang-questions>
>> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150512/64891f79/attachment.html>


More information about the erlang-questions mailing list