NAME
run_erl - Redirect Erlang input and output streams on
Solaris®
DESCRIPTION
This describes the run_erl program specific to
Solaris/Linux. This program redirect the standard input and
standard output streams so that all output can be logged. It also
let the program to_erl connect to the Erlang console making
it possible to monitor and debug an embedded system remotely.
You can read more about the use in the Embedded System User's
Guide.
EXPORTS
run_erl [-daemon] pipe_dir/ log_dir "exec command
[command_arguments]"
-
The run_erl program arguments are:
-
- -daemon:
- This option is highly recommended. It makes run_erl run in the
background completely detached from any controlling terminal and
the command returns to the caller immediately. Without this option,
run_erl must be started using several tricks in the shell to detach
it completely from the terminal in use when starting it. The option
must be the first argument to run_erl on the command line.
- pipe_dir:
- This is where to put the named pipe, usually /tmp/. It
shall be suffixed by a / (slash), i.e. not
/tmp/epipies, but /tmp/epipes/.
- log_dir:
- This is where the log files are written. There will be one log
file, run_erl.log that log progress and warnings from the
run_erl program itself and there will be up to five log
files at maximum 100KB each (both number of logs and sizes can be
changed by environment variables, see below) with the content of
the standard streams from and to the command. When the logs are
full run_erl will delete and reuse the oldest log file.
- "exec command [command_arguments]":
- In the third argument command is the to execute where
everything written to stdin and stdout is logged to
log_dir.
Notes concerning the log files
While running, run_erl (as stated earlier) sends all output,
uninterpreted, to a log file. The file is called
erlang.log.N, where N is a number. When the log is "full",
default after 100KB, run_erl starts to log in file
erlang.log.(N+1), until N reaches a certain number (default
5), where after N starts at 1 again and the oldest files start
getting overwritten. If no output comes from the erlang shell, but
the erlang machine still seems to be alive, an "ALIVE" message is
written to the log, it is a timestamp and is written, by default,
after 15 minutes of inactivity. Also, if output from erlang is
logged but it's been more than 5 minutes (default) since last time
we got anything from erlang, a timestamp is written in the log. The
"ALIVE" messages look like this:
===== ALIVE <date-time-string>
while the other timestamps look like this:
===== <date-time-string>
The date-time-string is the date and time the message is
written, default in local time (can be changed to GMT if one wants
to) and is formatted with the ANSI-C function strftime using
the format string %a %b %e %T %Z %Y, which produces messages
on the line of ===== ALIVE Thu May 15 10:13:36 MEST 2003,
this can be changed, see below.
Environment variables
The following environment variables are recognized by run_erl
and change the logging behavior. Also see the notes above to get
more info on how the log behaves.
-
- RUN_ERL_LOG_ALIVE_MINUTES:
- How long to wait for output (in minutes) before writing an
"ALIVE" message to the log. Default is 15, can never be less than
1.
- RUN_ERL_LOG_ACTIVITY_MINUTES:
- How long erlang need to be inactive before output will be
preceded with a timestamp. Default is RUN_ERL_LOG_ALIVE_MINUTES div
3, but never less than 1.
- RUN_ERL_LOG_ALIVE_FORMAT:
- Specifies another format string to be used in the strftime C
library call. i.e specifying this to "%e-%b-%Y, %T %Z" will
give log messages with timestamps looking like 15-May-2003,
10:23:04 MET etc. See the documentation for the C library
function strftime for more information. Default is "%a %b %e %T
%Z %Y".
- RUN_ERL_LOG_ALIVE_IN_UTC:
- If set to anything else than "0", it will make all times
displayed by run_erl to be in UTC (GMT,CET,MET, without DST),
rather than in local time. This does not affect data coming from
erlang, only the logs output directly by run_erl. The application
sasl can be modified accordingly by setting the erlang
application variable utc_log to true.
- RUN_ERL_LOG_GENERATIONS:
- Controls the number of log files written before older files are
being reused. Default is 5, minimum is 2, maximum is 1000.
- RUN_ERL_LOG_MAXSIZE:
- The size (in bytes) of a log file before switching to a new log
file. Default is 100000, minimum is 1000 and maximum is
approximately 2^30.
SEE ALSO
start(1),
start_erl(1)
AUTHOR
Kent Boortz -