error_logger and sasl\
Tue Jun 7 00:24:25 CEST 2005
On Mon, Jun 06, 2005 at 05:47:56PM -0400, Serge Aleynikov wrote:
} I see that there's some overlap in functionality of how the emulator can
} be started in production. Two ways are mentioned in the docs:
} 1. erl -detached -heart ...
} 2. run_erl -daemon ...
The emulator itself is an executable named "beam". We always run
it by calling the program named "erl" as it does a lot of stuff we
don't care to know about. The "erl" program has a number of options
to control how it behaves, some of which are useful in an embedded
system. The "run_erl" program is a front end for "erl" which handles
some of the issues inherent in an embedded system.
So I think that there is no overlap, run_erl provides yet more
functionality over erl.
} I believe the second feature is superseded by ^G command in the erl
} shell, where it is possible to connect a shell to a remote node (or is
} to_erl still preferable because it can really get access to the same
} console that started the node?).
The group leader for a process defines where the "tty" output goes.
If you use run_erl it receives all of this and logs it as well as
allowing you to connect and use the real console. I have no idea
what happens to the group leader when you run -detached.
} I was a bit hesitant to use run_erl because I wasn't sure if it could be
} reliably combined with the -heart option of starting the emulator.
I've not used heart yet.
} Would it be safe to do something like this in production:
} HEART_COMMAND= \
} run_erl -daemon pipe_dir/ log_dir "erl -heart [command_arguments]"
The way you would normally start an embeded system is with is with
~/lib/erlang/bin/start. You may add -heart to the command line
$ROOTDIR/bin/run_erl -daemon /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl $ROOTDIR $RELDIR $START_ERL_DATA -heart heart_command"
} In this case does the "erl" need to have any of the following: -detached
No! You definetly don't want those as you will be using the
console shell. You may want to use some of the other options
$ROOTDIR/bin/run_erl -daemon /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl $ROOTDIR $RELDIR $START_ERL_DATA +A32 +Bi -sname embedded"
} Upon examining a few projects (eddie, yaws, etc.) I saw that production
} systems are started using the "erl -detached ..." as opposed to run_erl
} method. Is it because it's more portable (i.e. run_erl is Linux/Solaris
The embedded system stuff was originally only targeted for Solaris
and as such other OS users had to come up with their own. I assume
that is what happened with Eddie. The situation today is much better,
the embedded tools work with Solaris, FreeBSD, OS X and that other
*nix. With yaws I think it's to minimize the OTP dependence.
More information about the erlang-questions