[erlang-questions] What's the proper/right way to run erlang in the background?

Daniel Goertzen <>
Mon Oct 21 15:52:03 CEST 2013


A few choices:

1. Take a look at the run_erl and to_erl programs included with Erlang.

2. If you are building your system with rebar, it adds a nice management
script for you.

3. Consider running erlang in a tmux or screen window.  You'll need to
learn a bit about tmux/screen first ... I recommend this (
http://blog.hawkhost.com/tag/tmux-tutorial/)

# tmux new-session -d \; new-window 'erl -s run start'
# tmux attach

Cheers,
Dan.



On Mon, Oct 21, 2013 at 7:09 AM, Michael Scofield <>wrote:

>  Hi all! I'm new to erlang for a few month.
>
> Recently I've developed a small pure erlang program, and it runs well in
> the shell. Now I want to run it in the background, as a daemon service
> process in the os (mine is Ubuntu 12.04 64bit with R16B). So I googled "run
> erlang without shell", and google gave me some advice:
>
> 1. Using escript. -This is what erlang official faq suggested (
> http://www.erlang.org/faq/how_do_i.html).
> 2. erl -detached -s Module Function Args
>
> I tried both. As to #1, my escript goes to
>
> #!/usr/bin/env escript
> main(_) ->
>   my_supervisor:start_link(arg1, arg2).
>
> I ran it using "nohup ./my-escript &", and it didn't run my code. =(
>
> So I went to #2. I was acknowledged that "-s" can only pass 0 or 1
> argument, so I wrapped my supervisor using
>
> -module(run).
> -export([start/0]).
>
> start() ->
>   my_supervisor:start_link(arg1, arg2).
>
> and ran my code as "erl -detached -s run start". But this was also a dead
> end.
>
> I guessed it's because the run:start/0 just returned and finished the
> shell(Is it?), so I added a line to the run:start/0:
>
> -module(run).
> -export([start/0]).
>
> start() ->
>   my_supervisor:start_link(arg1, arg2),
>   *receive after infinity -> stop end.*
>
> And executed "erl -detached -s run start", and everything goes fine!
> my_supervisor started to work without the shell!
>
> Though the problem "solved", I'm very very confused.
> 1. Why the "magic line" solved my problem?
> 2. What exactly is the proper or right way to run an erlang application in
> the background as the command "nohup ... &" does?
>
> Thanks in advance!
>
> Michael
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20131021/5f26ca1f/attachment.html>


More information about the erlang-questions mailing list