在线文档教程

run_erl

run_erl

命令

run_erl

命令摘要

在Unix系统上重定向Erlang输入和输出流。

描述

run_erl程序特定于Unix系统。该程序重定向标准输入和标准输出流,以便记录所有输出。它还让程序to_erl连接到Erlang控制台,从而可以远程监控和调试嵌入式系统。

有关使用的更多信息,请参阅Embedded System User's Guide系统文档。

输出

run_erl [-daemon] pipe_dir/ log_dir "exec command arg1 arg2 ..."

论点:

-daemon

强烈建议使用此选项。 它使run_erl在后台运行,完全脱离任何控制终端,并立即返回给调用者。 如果没有这个选项,run_erl必须在shell中使用几个技巧来启动,以便在启动时将它从正在使用的终端中完全分离。 该选项必须是命令行上run_erl的第一个参数。

pipe_dir

命名管道通常是/ tmp /。 它必须以/(斜线)作为后缀,即/ tmp / epipes /,而不是/ tmp / epipes。

log_dir

日志文件,即:

  • 一个日志文件,run_erl.log记录run_erl程序本身的进度和警告。

  • 最多五个日志文件,每个文件最多100 KB,标准流的内容来自命令。 (日志和大小的数量可以通过环境变量进行更改,请参见下面的环境变量部分。)

当日志已满时,run_erl删除并重新使用最早的日志文件。

"exec command arg1 arg2 ..."

指定要执行的程序的空格分隔字符串。第二个字段通常是一个命令名称,如erl

有关日志文件的注意事项

在运行时,run_erl将所有未解释的输出发送到日志文件。该文件被命名erlang.log.N,其中N是一个整数。当日志为“满”(默认日志大小为100 KB)时,run_erl开始登录文件erlang.log.(N+1),直到N达到某个数字(默认为5),然后N从1开始,最旧的文件开始被覆盖。

如果没有输出来自Erlang外壳,但Erlang机器似乎仍然活着,则会向日志中写入“ALIVE”消息; 它是一个时间标记,默认情况下会在15分钟不活动后写入。另外,如果从Erlang输出记录,但自上次以来超过5分钟(默认)已经通过Erlang获取任何内容,则时间戳将写入日志中。“ALIVE”消息如下所示:

===== ALIVE <date-time-string>

其他时间戳如下:

===== <date-time-string>

date-time-string是消息写入的日期和时间,默认为本地时间(如果需要可以更改为UTC)。 它使用格式化字符串%a%b%e%T%Z%Y来格式化为ANSI-C函数strftime,这会生成如===== ALIVE Thu May 15 10:13:36 MEST 2003; 这可以改变,见下一节。

环境变量

以下环境变量由run_erl识别并更改日志记录行为。 有关更多信息,请参阅上一节。

RUN_ERL_LOG_ALIVE_MINUTES

在向日志写入“ALIVE”消息之前等待输出(以分钟为单位)需要多长时间。默认为15,最小值为1。

RUN_ERL_LOG_ACTIVITY_MINUTES

在输出前加上时间标记之前,Erlang需要非活动多久。默认为RUN_ERL_LOG_ALIVE_MINUTES div 3,最小值为1。

RUN_ERL_LOG_ALIVE_FORMAT

指定要在strftime C库调用中使用的另一个格式字符串。 也就是说,将此指定为“%e-%b-%Y,%T%Z”会给日志消息带来诸如15-May-2003,10:23:04 MET之类的时间戳。 有关更多信息,请参阅C库函数strftime的文档。 默认为“%a%b%e%T%Z%Y”。

RUN_ERL_LOG_ALIVE_IN_UTC

如果设置为0以外的任何值,则run_erl显示的所有时间均为UTC(GMT,CET,MET,无夏令时),而不是本地时间。 这不会影响来自Erlang的数据,只会影响run_erl直接输出的日志。 通过将Erlang应用程序变量utc_log设置为true,可以相应地修改应用程序SASL。

RUN_ERL_LOG_GENERATIONS

控制重新使用旧文件之前写入的日志文件的数量。默认为5,最小值为2,最大值为1000。

RUN_ERL_LOG_MAXSIZE

在切换到新日志文件之前,日志文件的大小(以字节为单位)。默认为100000,最小值为1000,最大值约为2 ^ 30。

RUN_ERL_DISABLE_FLOWCNTRL

如果已定义,则禁用pty opend的输入和输出流量控制run_erl。如果您想通过使用Ctrl-S(而不是Ctrl-D分离)意外阻止流量控制的风险,可能会导致整个Beam进程被阻塞,并且甚至在作为主管运行心脏的情况下心脏进程在向终端写入日志消息时被阻塞,导致心脏进程无法工作。

另见

start(1)start_erl(1)