erlang接入节点shell

erlang接入远程节点的shell控制台
(节点之间通信相通要设置相同的cookie)

(第1,第2方法在linux下可以直接使用,window下要启用werl才可以)

一:Erlang shell JCL

(JCL是Erlang Shell的一种运行模式,即Job Control Mode (JCL, in which jobs can be started, killed, detached and connected))
Ctrl+G即可进入JCL(注意,在window下,要启动werl才可以进入JCL)

打开两个节点测试:node1@127.0.0.1 和node2@127.0.0.1

node2


node1用bat启动werl(window下)



用node1接入到node2的shell控制台,在node1的shell进行操作,Ctrl+G进入JCL



注意进入到node2,直接q(),会直接把node2挂掉了,回到node1要再进入JCL


二:启动参数 -remsh Node


即可直接进入node2的控制台


退出也是要进入JCL

ejabberd网站提到了相关方法:
http://www.ejabberd.im/tricks
http://www.ejabberd.im/interconnect-erl-nodes

三:erl_call

工具erl_call是强大的,erl_call模块的设计目标就是使用Unix Shell脚本与分布式Erlang节点进行交互,erl_call可以启动或者连接到一个分布式的Erlang节点进行简单的方法调用甚至执行表达式序列;erl_call构建在erl_interface之上,通过标准的RPC调用方式
与Erlang的rex server交互,并不需要额外的工具支持
(注意Erlang版本不同erl_call的路径也有所不同)


语法:到erl_call目录下:
erlang/lib/erl_interface-3.9.2/bin/erl_call [-[demqrsv]] [-c Cookie] 


选项:
-a    执行erlang:apply/3,需要提供的就是m f a,m是必须的,f默认值start,a默认值[],注意这个flag只接受一个参数,所以一定要通过添加双引号""把m f a组织起来,"m f a"或者"m f"
-c 执行cookie值如果没有指定就会使用  ~/.erlang.cookie 文件中定义的cookie,Erlang 节点之间通信必须要有相同的cookie
-d 调试模式;所有的IO都会输出到~/.erl_call.out.Nodename文件,其中NodeName就是我们要处理的erlang节点名;
-e 读一系列的Erlang表达式并返回最后一个表达式的结果,这些表达式用','分隔,'.'结束,这个Erlang Shell是一致的,Ctrl+D组合键结束输入,如果成功返回结果{ok,Result}.
-h HiddenName 隐藏erl_call代表的节点
-m 读入并编译一个module
-n -name -sname 这三个参数三选一,name和n是同样的含义是为了兼容依然保留,sname代码短名称
-q 停止Erlang 节点
-r 为erl_call生一个随机name
-s 必要的话启动一个Erlang的分布式节点,意思是自由第一个调用会启动一个Erlang节点后续的调用就会快很多.
-v  多打印一些冗余信息

-x ErlScript:指定Erlang启动脚本如果不指定就是用erl start-up脚本



在没有erlang机器上,也可用ssh接入(还没测试体验过)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值