在后台运行erlang;在需要时连回交互模式

时间:2024-01-12 14:24:08

* 1. 启动后台运行的erlang环境

按以下命令:

erl -detached -name a@127.0.0.1

注意,-name的值必须是xxxx@ip的形式。其中xxxx是英文名,ip必须是数字和点

的形式。如果是可以解析的有效域名应该也是可以的,但我试了用localhost会不

能被正常连接。同时,这个ip也必须是客户端能访问到的有效ip,否则同样不能

成功连接。

启动时还可以加上-s指定要运行的模块,函数。然后它就在后台跑了。如果你是

远程用ssh这些方式连上控制台的,现在可以关了,它也还会继续跑。

* 2. 启动另一个erlang环境连接到之前启动的erlang

现在,我们需要连上之前后台启动的erlang去控制一下它,或者查看一下情况之

类的。用以下命令启动:

erl -name b@ip

其中,b也是一个英文名,但注意不能和之前的a相同(即使ip不同也不行)。此

处的ip貌似可以随便写,因为不需要从a再连回b。但如果需要,可能还是要写一

个能从a访问到b的有效ip。

启动后,进入了互动的环境,此时按Ctrl+g,进入用户切换模式,这时输入

r 'a@127.0.0.1'

c

<Enter>

会发现此时你已经在a@127.0.0.1的用户下发号施令了。当你用完后,再用

Ctrl+g然后用j查看b的id是1还是2,用c 1或c 2连回来。在b里面用q().退出。这

样a还是在运行。

参考文章:

《一种以standalone方式启动erlang应用的方法》