如何停止或重新连接Erlang中的节点?
我是新来的二郎 目前,我创建了一个模块,帮助我将用户请求转发到apns库 我创建了一个gen_服务器模块,并将其添加到主管 今天,当我用erl-sname apns_服务器启动我的模块时 一切正常。但由于我暂停了终端一段时间,服务器关闭了连接 然后问题发生了。在与服务器建立新连接后,我无法启动新的erl-sname apns_服务器 错误消息说已经存在一个apns_服务器。我确实在epmd-names中看到了服务器名称 节点没有激活,因为我可以通过rpc:call发送请求以运行请求。但我不知道如何阻止它 由于该模块仍在开发中,我需要更新一些代码,然后重新启动它。我该怎么做?由于有其他Erlang服务在同一台机器上运行,我无法重新启动系统。是否有其他方法停止模块的Erlang节点? 多谢各位~~如何停止或重新连接Erlang中的节点?,erlang,Erlang,我是新来的二郎 目前,我创建了一个模块,帮助我将用户请求转发到apns库 我创建了一个gen_服务器模块,并将其添加到主管 今天,当我用erl-sname apns_服务器启动我的模块时 一切正常。但由于我暂停了终端一段时间,服务器关闭了连接 然后问题发生了。在与服务器建立新连接后,我无法启动新的erl-sname apns_服务器 错误消息说已经存在一个apns_服务器。我确实在epmd-names中看到了服务器名称 节点没有激活,因为我可以通过rpc:call发送请求以运行请求。但我不知道如
Eric要连接到现有节点,请执行以下操作:
erl-name some\u name-cookie some\u cookie
)^G
(即CTRL+G
)打开终端命令界面r其他\u节点_name@node.host
远程连接到其他节点j
列出当前作业。将列出在您尝试联系的节点上生成的新shellc[远程shell的作业编号]
以连接到要使用的节点上的新shellfoo@changa.shinden.tsuriai.jp“
:
ceverett@changa:~$ erl -name foo -cookie bar
Erlang/OTP 20 [RELEASE CANDIDATE 2] [erts-9.0] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.0 (abort with ^G)
(foo@changa.shinden.tsuriai.jp)1>
这是我的第二个节点,名为baz@changa.shinden.tsuriai.jp“
,我将使用它启动到另一个的远程shell连接。请注意,我已使用与上述相同的cookie(选项-cookie bar
)启动此erl会话:
ceverett@changa:~$ erl -name baz -cookie bar
Erlang/OTP 20 [RELEASE CANDIDATE 2] [erts-9.0] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.0 (abort with ^G)
(baz@changa.shinden.tsuriai.jp)1>
User switch command
--> ?
c [nn] - connect to job
i [nn] - interrupt job
k [nn] - kill job
j - list all jobs
s [shell] - start local shell
r [node [shell]] - start remote shell
q - quit erlang
? | h - this message
--> r 'foo@changa.shinden.tsuriai.jp'
--> j
1 {shell,start,[init]}
2* {'foo@changa.shinden.tsuriai.jp',shell,start,[]}
--> c 2
Eshell V9.0 (abort with ^G)
(foo@changa.shinden.tsuriai.jp)1>
注意我的提示在底部是如何变化的吗?就这些
这在集群中连接的任何Erlang节点之间都有效,并且在使用长节点名运行EPMD的情况下,如果远程节点能够在网络上看到彼此,则它们将尝试彼此连接。在这种情况下,两个节点都在同一台主机上运行,但只要主机可以在网络上看到对方,其工作方式就相同。要连接到现有节点:
erl-name some\u name-cookie some\u cookie
)^G
(即CTRL+G
)打开终端命令界面r其他\u节点_name@node.host
远程连接到其他节点j
列出当前作业。将列出在您尝试联系的节点上生成的新shellc[远程shell的作业编号]
以连接到要使用的节点上的新shellfoo@changa.shinden.tsuriai.jp“
:
ceverett@changa:~$ erl -name foo -cookie bar
Erlang/OTP 20 [RELEASE CANDIDATE 2] [erts-9.0] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.0 (abort with ^G)
(foo@changa.shinden.tsuriai.jp)1>
这是我的第二个节点,名为baz@changa.shinden.tsuriai.jp“
,我将使用它启动到另一个的远程shell连接。请注意,我已使用与上述相同的cookie(选项-cookie bar
)启动此erl会话:
ceverett@changa:~$ erl -name baz -cookie bar
Erlang/OTP 20 [RELEASE CANDIDATE 2] [erts-9.0] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.0 (abort with ^G)
(baz@changa.shinden.tsuriai.jp)1>
User switch command
--> ?
c [nn] - connect to job
i [nn] - interrupt job
k [nn] - kill job
j - list all jobs
s [shell] - start local shell
r [node [shell]] - start remote shell
q - quit erlang
? | h - this message
--> r 'foo@changa.shinden.tsuriai.jp'
--> j
1 {shell,start,[init]}
2* {'foo@changa.shinden.tsuriai.jp',shell,start,[]}
--> c 2
Eshell V9.0 (abort with ^G)
(foo@changa.shinden.tsuriai.jp)1>
注意我的提示在底部是如何变化的吗?就这些
这在集群中连接的任何Erlang节点之间都有效,并且在使用长节点名运行EPMD的情况下,如果远程节点能够在网络上看到彼此,则它们将尝试彼此连接。在这种情况下,两个节点都在同一台主机上运行,但只要主机可以在网络上看到对方,它的工作方式就相同。谢谢,它可以工作。在我连接到节点之后。我设置了命令init:stop()。似乎节点现在已关闭。我是否使用正确的命令关闭节点@彭煥閎 是的,
init:stop()
使系统尽可能平稳地停止运行。谢谢,似乎我以前在工作线程中回复过,我找到了一种连接现有节点的新方法。选项-remsh可以做同样的事情,例如:erl-sname client-remshejabberd@newserver-api-001,我将在将来检查+R选项的兼容性问题。谢谢,它起作用了。在我连接到节点之后。我设置了命令init:stop()。似乎节点现在已关闭。我是否使用正确的命令关闭节点@彭煥閎 是的,init:stop()
使系统尽可能平稳地停止运行。谢谢,似乎我以前在工作线程中回复过,我找到了一种连接现有节点的新方法。选项-remsh可以做同样的事情,例如:erl-sname client-remshejabberd@newserver-api-001,我将在将来检查+R选项以了解兼容性问题。