博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
本机连接调试Erlang结点与rebar3编译
阅读量:7086 次
发布时间:2019-06-28

本文共 1504 字,大约阅读时间需要 5 分钟。

    今天需要实时查看目标结点上的相关信息,于是查阅了关于远程Shell使用的资料,最终采用JCL的方式与本机上的erlang结点交互。在使用erl shell时需要指定目标结点的cookie以及当前结点名,才能正确连接到目标结点。比如:

    erl -name Jack@127.0.0.1 -setcookie xxxxx

    注意-name指定的long-name必须包含@,不然会报'Can't set long name, please check your configuration'的错误。然后Ctrl+G进入到User Switch Command模式进行操作。测试发现目标结点执行io:format时的输出并未在本地shell中输出,因此只好在目标结点上编写api并返回字符串信息,在本地shell通过io:format再输出。比如:

    io:format(gen_server:call(xxx, {debug, dump})).

    考虑到目标机上没有erlang环境,因此需要发布release镜像包布署到目标机上,再ssh到上面执行。这里是使用rebar3编译打包的,git地址为:

    https://github.com/erlang/rebar3

    执行命令如下:

    $ git clone https://github.com/erlang/rebar3.git

    $ cd rebar3

    $ ./bootstrap

    $ ./rebar3 local install # 本地安装

    ==> Extracting rebar3 libs to ~/.cache/rebar3/lib...

    ==> Writing rebar3 run script ~/.cache/rebar3/bin/rebar3...

    ==> Add to $PATH for use: export PATH=$PATH:~/.cache/rebar3/bin

    $ export PATH=$PATH:~/.cache/rebar3/bin # 添加到环境变量

    rebar3环境安装好后,创建工程:

    $ rebar3 new release test

    编写好代码后,编译:

    $ rebar3 compile

    打包发布:

    $ rebar3 as prod tar

    详细内容见rebar3官方文档:http://www.rebar3.org/docs/basic-usage

    这时,在_build/prod/rel/test目录下就可以看到生成的tar.gz文件了。注意在启动时有多个参数可以选择,因为要在shell界面输入命令,因此在bin目录下应该输入如下命令:

    $ ./test console # 如果想在后台运行应该输入./test start

    在启动shell连接目标结点时,首先需要设置cookie:

    erlang:set_cookie(node(), xxxx).

    之后又报错:erlang System NOT running to use fully qualified hostnames; 127.0.0.1 is illegal hostname for Erlang nodes

    从提示来看,是因为test工程是以短命名启动结点的。找到config目录下的vm.args文件,修改其中的-sname test@localhost为-name test@localhost,再重新启动,成功连接。

 

 

转载于:https://www.cnblogs.com/Jackie-Snow/p/9324001.html

你可能感兴趣的文章
Java 中队列的使用
查看>>
再见 2014,你好 2015
查看>>
13 SELECT 以外的内容
查看>>
初中面谈招生网上招生报名系统
查看>>
.NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用
查看>>
干货:史上最实用逃顶绝招十二式!
查看>>
鸟哥Linux私房菜 基础学习篇读书笔记(10):Linux磁盘和文件系统管理(3)
查看>>
简述Session 、Cookie、cache 区别
查看>>
large-scale analysis of malware downloaders
查看>>
pyqt声音输入
查看>>
FMX 模态窗体
查看>>
使用storyboard实现页面跳转,简单的数据传递
查看>>
有些事明显对自己有益,为什么却无法去做?
查看>>
IOS开发基础知识--碎片30
查看>>
C语言编程规范—命名规则
查看>>
批处理-剪切文件夹到指定目录
查看>>
java POi excel 写入大批量数据
查看>>
关于子类对象的构造函数和父类构造函数的执行顺序
查看>>
.NET Core Web 应用部署到 Docker 中运行
查看>>
Saltstack-API(十二)
查看>>