<div dir="ltr">A few choices:<div><br></div><div>1. Take a look at the run_erl and to_erl programs included with Erlang.</div><div><br></div><div>2. If you are building your system with rebar, it adds a nice management script for you.</div>
<div><br></div><div>3. Consider running erlang in a tmux or screen window.  You'll need to learn a bit about tmux/screen first ... I recommend this (<a href="http://blog.hawkhost.com/tag/tmux-tutorial/">http://blog.hawkhost.com/tag/tmux-tutorial/</a>)</div>
<div><br></div><div><div># tmux new-session -d \; new-window 'erl -s run start'</div></div><div># tmux attach</div><div><br></div><div>Cheers,</div><div>Dan.</div><div><br></div></div><div class="gmail_extra"><br>
<br><div class="gmail_quote">On Mon, Oct 21, 2013 at 7:09 AM, Michael Scofield <span dir="ltr"><<a href="mailto:bayinamine@gmail.com" target="_blank">bayinamine@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  

    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Hi all! I'm new to erlang for a few month. <br>
    <br>
    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:<br>
    <br>
    1. Using escript. -This is what erlang official faq suggested (
    
    <a href="http://www.erlang.org/faq/how_do_i.html" target="_blank">http://www.erlang.org/faq/how_do_i.html</a>).
    <br>
    2. erl -detached -s Module Function Args<br>
    <br>
    I tried both. As to #1, my escript goes to<br>
    <br>
    #!/usr/bin/env escript<br>
    main(_) -><br>
      my_supervisor:start_link(arg1, arg2).<br>
    <br>
    I ran it using "nohup ./my-escript &", and it didn't run my
    code. =(<br>
    <br>
    So I went to #2. I was acknowledged that "-s" can only pass 0 or 1
    argument, so I wrapped my supervisor using<br>
    <br>
    -module(run).<br>
    -export([start/0]).<br>
    <br>
    start() -><br>
      my_supervisor:start_link(arg1, arg2).<br>
    <br>
    and ran my code as "erl -detached -s run start". But this was also a
    dead end. <br>
    <br>
    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:<br>
    <br>
    -module(run).<br>
    -export([start/0]).<br>
    <br>
    start() -><br>
      my_supervisor:start_link(arg1, arg2),<br>
      <b>receive after infinity -> stop end.</b><br>
    <br>
    And executed "erl -detached -s run start", and everything goes fine!
    my_supervisor started to work without the shell!<br>
    <br>
    Though the problem "solved", I'm very very confused.<br>
    1. Why the "magic line" solved my problem?<br>
    2. What exactly is the proper or right way to run an erlang
    application in the background as the command "nohup ... &" does?<br>
    <br>
    Thanks in advance!<span class="HOEnZb"><font color="#888888"><br>
    <br>
    Michael<br>
  </font></span></div>

<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>