erlang启动参数
(2012-03-14 12:49:58)
标签:
杂谈 |
分类: erlang1 |
erlang启动参数有3种:emulator flags, flags 和plain arguments。
emulator flags 是以“+”开头的,用来控制模拟器的行为,附送一个非常实用的例子:
相关阅读:http://www.linuxidc.com/Linux/2011-07/39156.htm
1.C:\>erl +V
2.Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version
5.8.2
flags 是以“-”开头的, 是erlang运行时系统的参数,可以用init:get_argument/1获得。
plain arguments 普通参数,在第一个flag参数前,或在--
flag之后,-extra后的参数都是普通参数。
1.</pre><p><span
class="bold_code">erl +W w -sname arnie +R 9 -s
my_init -extra
+bertie</span></p><p><strong></strong>
</p><pre class="plain"
name="code">% erl +W w -sname arnie +R 9 -s my_init
-extra
+bertie
2.(arnie@host)1>
init:get_argument(sname).
3.{ok,[["arnie"]]}
4.(arnie@host)2>
init:get_plain_arguments().
5.["+bertie"]
Here +W w and +R 9 are emulator flags. -s my_init is an init flag,
interpreted by init. -sname arnie is a user flag, stored by init.
It is read by Kernel and will cause the Erlang runtime system to
become
distributed. Finally, everything after -extra (that is, +bertie)
is considered as plain arguments.
Flags
-Application Par Val 把应用中的Par参数设置为值Val;
-args_file FileName 从文件FileName读取命令行参数;
-code_path_cache 不常用;
-compile Mod1 Mod2 ...
-config Config 指定配置文件,这个是很有用的,比如在Programming Erlang里,就用到 erl -boot
start_sasl -config elog3,其中文件全名是elog3.config,内容如下:
2.[{sasl,[
3.
4.
5.
6.
7.
8.
9.
10.
11.
配置的含义,请参考相关书籍;
-cookie Cookie 被-setcookie代替了;
-detached 脱离console,跑后台erlang进程用的,看做"nohup ****
&";
-emu_args debug用的,打印出实际传给模拟器的值;
-env Variable Value 设置操作系统环境变量用的,比如:
1.erl -env DISPLAY gin:0
-eval Expr(init flag)
1.% erl -eval '{X,Y,Z}' = now(),
random:seed(X,Y,Z).'
-id Id 给erlang进程设置一个id,一般和-sname 和 -name一起用;
erlang节点/进程设置一个名称 -noinput-noshell-nostick
-pa Dir1 Dir2 ...
-pz Dir1 Dir2 ...-remsh Node
远程启动一个erlang节点,比如(当然RSA神马的,要先搞定):
1.erl -sname node1 -remsh node2@machine2.example.com
cookie,比如:
并且它是运行时可以改的:
1.erlang:set_cookie(node(),
'SFEWRG34AFDSGAFG35235').
-shutdown_time Time 关闭节点需要的时间,如果超过,就直接kill,默认是infinity;
version(emulator flag)
+a size 一般实用默认值就可以了。
Suggested stack size, in kilowords, for threads in the async-thread
pool. Valid range is 16-8192 kilowords. The default suggested stack
size is 16 kilowords, i.e, 64 kilobyte on 32-bit architectures.
This
small default size has been chosen since the amount of async-threads might be quite large. The default size is enough for drivers delivered with Erlang/OTP, but might not be sufficiently large for other
dynamically linked in drivers that use the driver_async()
functionality. Note that the value passed is only a suggestion, and
it might even be ignored on some platforms.
+A size 一步线程池的大小,默认是0;比如执行werl +A 1,会看到:
1.Erlang R14B01 (erts-5.8.2) [smp:2:2] [rq:2]
[async-threads:1]
2.
3.Eshell V5.8.2
+B [c | d | i]
+c
+d 默认情况下erlang进程遇到内部错误,比如oom,会产生一个crash dump和core
dump,+d让节点只产生后者;
+fna 和当前操作系统一致;
+hms Size 指定erlang进程的默认(最小?)堆内存大小(这个应该不用太担心); +hmbs Size
进程默认二进制虚拟内存堆大小;+K true | false 是否开启kernel poll,就是epoll;+l +MFlag
Value
+R ReleaseNumber
+r
+rg ReaderGroupsLimit
+S Schedulers:SchedulerOnline
+sFlag Value
+t size
+T Level
+V 模拟器版本号
+W w | i
Environment variables
ERL_CRASH_DUMP
ERL_CRASH_DUMP_NICE
ERL_CRASH_DUMP_SECONDS
ERL_ZFLAGS 和 ERL_FLAGS
ERL_LIBS
111111111111111111111111
+p 1342177725 起动时加这个参数将导致:内存使用加 1342177725*4bytes = 524287kbytes = 527mbytes
(这只是处理进程表所用内存)
111111111111111111111111
让Erlang服务器后台运行
erlang默认运行时是带有终端的,在开发过程中可以很方便的检查程序的bug,但在开发完成后,应该以后台的方式运行服务。
-noshell (该参数关闭终端,但依然不会后台运行,有输出时会直接打印到当前屏幕
-noinput 禁止终端下的输入
-hidden 隐藏运行
-detached 后台方式运行
其实最好用的就是-detached,如果将此参数加入启动脚本,程序会立即进入后台运行,你可以通过进程号将其调入到前台,在加入此参数运行服务器后,查看当前正在运行的程序,你会发现这个参数自动被分解成了 -noshell 和 -noinput, 所以,在加入-detached后,就不需要再加这两个参数了。