erlang的启动参数分3类
1、emulator flags
以”+”开头,用来控制Erlang 虚拟机的行为
例如: +P 表示erlang节点的最大进程数
2、flags
以”-“开头,是Erlang运行时的系统参数,可以通过init:get_argument(Key)或者init:get_arguments()来获取
在启动的过程中这些参数都会传递给init进程
3、plain flags
普通参数,在”-flag”之后,或是”-extra”之后,可以通过init:get_plain_arguments获取
其中的重要参数有
-detached 脱离console,后台运行
这样erlang虚拟机就进入了所谓的detached模式,在detached模式中,erlang静悄悄的在背后运行,没有常见的那个交互终端界面;
-hidden 隐藏节点
-setcookie 设置cookie
4、在*.app中的env也可以指定参数
这些参数通过application:get(Key,Val)获取
+a size
系统栈大小, 默认16KB
+A size
异步线程池大小, 默认为0
+d
系统错误不生成crash文件
+e Number
ETS表最大数量
+K true | false
是否启用操作系统的poll机制
+P Number
最大并发线程数
+l
自动载入启动跟踪器并显示
+W w|i
设置error_logger的警告信息
-smp
-smp[enable|disable|auto],auto默认,设置是否启动调度器,+S Number 设置调度器的数量(1到1024)
rem 默认计算机几核,smp VM就有几个调度器
-config Config 指定配置文件,这个是很有用的,比如在Programming Erlang里,就用到 erl -boot start_sasl -config elog3,其中文件全名是elog3.config,
-pa 和 -pz
设置:代码查找路径(类似于classpath),可以通过code:get_path().查看当前装载路径
例如:-pa D:\code\ -pz E:\erlang
pa pz这两个参数等效下面的方法:
管理装载路径两个最常用的函数如下:
@spec code:add_patha(Dir) => true | {error,bad_directory}
添加新目录Dir到装载路径的开头
@spec code:add_pathz(Dir) => true | {error,bad_directory}
添加新目录Dir到装载路径的末尾
通过code:all_loaded().查看当前装载的代码 , code:clash().可以帮助检查在路径上的名字冲突
- 可以修改$HOME/.erlang 来设置路径,例如: code:add_patha(“/home/argan/erl”).
- 也可以通过命令行参数来指定,
例如: erl -pa /home/argan/erl/ -pz /home/argan/erl2/ -pz /home/argan/erl3/ - 当前路径的.erlang 比$HOME/.erlang优先级高
- 可以通过init:get_arguments().和init:get_argument(ArgumentName).
-eval 直接运行代码 eg:-eval ‘make:all().’
-name 长节点名 Name 给一个erlang节点/进程设置一个名称(还有-n、-sname)
-name的值必须是xxxx@ip的形式。其中xxxx是英文名,ip必须是数字和点的形式。eg:server@127.0.0.1(其实不一定是数字和点,也可以是如mybox.home.net这种,当然也可以是 -sname那样 test@1 也是可以的)-name是完全限定域名,适用于配有DNS的普通网络环境。
-sname 短节点名 适用于完全限定域名不可用的情况;eg: -sname test@1 或者 -sname test@a 都可以的。
-n和-name是一样的,为了兼容依然保留。
-setcookie Cookie 给节点设置cookie,比如:
erl -setcookie SFEWRG34AFDSGAFG35235
并且它是运行时可以改的:
erlang:set_cookie(node(), ‘SFEWRG34AFDSGAFG35235’).
设置cookie的三种方式
(1)%20erl%20-setcookie%20C%0A(3)%20erlang%3Aset_cookie(node()%2C%20C)%0A%C2%A0%0A-noshell%C2%A0%EF%BC%9A%E5%90%AF%E5%8A%A8Erlang%E8%80%8C%E6%B2%A1%E6%9C%89%E4%BA%A4%E4%BA%92%E5%BC%8Fshell%EF%BC%8C%E6%AD%A4%E6%97%B6%E4%B8%8D%E4%BC%9A%E5%BE%97%E5%88%B0Erlang%E7%9A%84%E5%90%AF%E5%8A%A8%E4%BF%A1%E6%81%AF%E6%9D%A5%E6%8F%90%E7%A4%BA%E6%AC%A2%E8%BF%8E%E3%80%82%0A%C2%A0%0A-s%C2%A0hello%20start%20%EF%BC%9A%E8%BF%90%E8%A1%8C%E5%87%BD%E6%95%B0%20hello%3Astart()%20%EF%BC%8C%E6%B3%A8%E6%84%8F%E4%BD%BF%E7%94%A8%20-s%20Mod%20%E2%80%A6%20%E9%80%89%E9%A1%B9%E6%97%B6%EF%BC%8C%E7%9B%B8%E5%85%B3%E7%9A%84%E6%A8%A1%E5%9D%97Mod%E5%BF%85%E9%A1%BB%E5%B7%B2%E7%BB%8F%E7%BC%96%E8%AF%91%E5%AE%8C%E6%88%90%E4%BA%86%E3%80%82%0A-run%C2%A0Mod%20%5BFunc%20%5BArg1%2C%20Arg2%2C%20…%5D%5D%0A-s%C2%A0Mod%20%5BFunc%20%5BArg1%2C%20Arg2%2C%20…%5D%5D%0A%C2%A0%0A-boot%C2%A0File%C2%A0%C2%A0%E6%8C%87%E5%AE%9A%E5%90%AF%E5%8A%A8%E4%BD%BF%E7%94%A8%E7%9A%84boot%E6%96%87%E4%BB%B6(%E5%BC%95%E5%AF%BC%E6%96%87%E4%BB%B6)%EF%BC%8C%E9%BB%98%E8%AE%A4%E6%98%AF#card=math&code=HOME%2F.erlang.cookie%0A%282%29%20erl%20-setcookie%20C%0A%283%29%20erlang%3Aset_cookie%28node%28%29%2C%20C%29%0A%C2%A0%0A-noshell%C2%A0%EF%BC%9A%E5%90%AF%E5%8A%A8Erlang%E8%80%8C%E6%B2%A1%E6%9C%89%E4%BA%A4%E4%BA%92%E5%BC%8Fshell%EF%BC%8C%E6%AD%A4%E6%97%B6%E4%B8%8D%E4%BC%9A%E5%BE%97%E5%88%B0Erlang%E7%9A%84%E5%90%AF%E5%8A%A8%E4%BF%A1%E6%81%AF%E6%9D%A5%E6%8F%90%E7%A4%BA%E6%AC%A2%E8%BF%8E%E3%80%82%0A%C2%A0%0A-s%C2%A0hello%20start%20%EF%BC%9A%E8%BF%90%E8%A1%8C%E5%87%BD%E6%95%B0%20hello%3Astart%28%29%20%EF%BC%8C%E6%B3%A8%E6%84%8F%E4%BD%BF%E7%94%A8%20-s%20Mod%20%E2%80%A6%20%E9%80%89%E9%A1%B9%E6%97%B6%EF%BC%8C%E7%9B%B8%E5%85%B3%E7%9A%84%E6%A8%A1%E5%9D%97Mod%E5%BF%85%E9%A1%BB%E5%B7%B2%E7%BB%8F%E7%BC%96%E8%AF%91%E5%AE%8C%E6%88%90%E4%BA%86%E3%80%82%0A-run%C2%A0Mod%20%5BFunc%20%5BArg1%2C%20Arg2%2C%20…%5D%5D%0A-s%C2%A0Mod%20%5BFunc%20%5BArg1%2C%20Arg2%2C%20…%5D%5D%0A%C2%A0%0A-boot%C2%A0File%C2%A0%C2%A0%E6%8C%87%E5%AE%9A%E5%90%AF%E5%8A%A8%E4%BD%BF%E7%94%A8%E7%9A%84boot%E6%96%87%E4%BB%B6%28%E5%BC%95%E5%AF%BC%E6%96%87%E4%BB%B6%29%EF%BC%8C%E9%BB%98%E8%AE%A4%E6%98%AF&id=IfTj1)ROOT/bin/start.boot,在这个目录下还有start_clean.boot,start_sasl.boot。如果需要sasl的话,就“-boot start_sasl ”;
-root_dir 设置系统的跟目录;
-args_file FileName 从文件FileName读取命令行参数;
-Application Par Val 把应用中的Par参数设置为值Val;
-heart 启动心跳监控器;
-hidden 设置为隐藏节点,该节点会连接集群的所有节点,但是在其他节点执行node/0,不会列出它;
-hosts Hosts erlang运行在那些服务器的IP地址;
-id Id 给erlang进程设置一个id,一般和-sname 和 -name一起用;
+ec 强制ETS表启动压缩,一般不用的;
+fnl 如果文件名使用了ISO-latin-1编码;
+fnu 如果文件名使用了UTF-8 编码;
+fna 和当前操作系统一致;
-remsh Node 远程启动一个erlang节点,比如(当然RSA神马的,要先搞定):
erl -sname node1 -remsh node2@machine2.example.com
-rsh Program 远程启动一个slave erlang节点
-shutdown_time Time 关闭节点需要的时间,如果超过,就直接kill,默认是infinity;
+hms Size 指定erlang进程的默认(最小?)堆内存大小(这个应该不用太担心);
+hmbs Size 进程默认二进制虚拟内存堆大小;
让Erlang服务器后台运行
erlang默认运行时是带有终端的,在开发过程中可以很方便的检查程序的bug,但在开发完成后,应该以后台的方式运行服务。
-noshell (该参数关闭终端,但依然不会后台运行,有输出时会直接打印到当前屏幕
-noinput 禁止终端下的输入
-hidden 隐藏运行
-detached 后台方式运行
其实最好用的就是-detached,如果将此参数加入启动脚本,程序会立即进入后台运行,你可以通过进程号将其调入到前台,在加入此参数运行服务器后,查看当前正在运行的程序,你会发现这个参数自动被分解成了 -noshell 和 -noinput, 所以,在加入-detached后,就不需要再加这两个参数了。
+pc 这个选项的作用就是选择Shell可打印字符的范围,可以是erl +pc latin1 或者 erl +pc unicode,影响中文显示。