[erlang-questions] What happens on TERM?
Siraaj Khandkar
siraaj@REDACTED
Fri Oct 26 19:47:06 CEST 2012
On Oct 26, 2012, at 1:31 PM, Dominic Williams wrote:
> Hi Daniel,
>
> Le 25 oct. 2012 à 20:07, Daniel Dormont a écrit :
>
>> Or, more precisely: I am running an Erlang VM as a daemon on Linux, with a number of applications (Ejabberd and its various dependencies such as Mnesia, specifically). When I issue a shutdown command on the machine, is there a way to have the Erlang VM receive a signal and cleanly shutdown all running applications? Or do I need to use some kind of custom script (for example, Ejabberd includes ejabberdctl which has a stop command, so I guess I could issue that and wait a bit before halting)?
>
> I don't believe it is possible to catch the OS signals sent to the VM itself. You could write a port program that would catch its own and send them to your Erlang application... however this is complicated.
>
> What we do with embedded (daemon) Erlang applications is to have a Linux /etc/init.d script to start, stop and restart it. Then, if you configure this correctly, your daemon will be started automatically at boot time and shutdown cleanly too.
>
> Generating an Erlang release (by hand or with rebar) provides the necessary commands to make writing such a init.d script easy.
>
> Alternatively you could look at the Yaws distribution (especially using e.g. the Debian package), which provides all this, including the init.d script, so you can see how it's done.
>
The following may help as well:
https://github.com/ShoreTel-Inc/erld
--
Siraaj Khandkar
.o.
..o
ooo
More information about the erlang-questions
mailing list