【转】Erlang 里面使用Remote shell
原文地址:avindev.javaeye.com
原文作者:AvinDev
今天无意中发现这个功能。。。
在下载的 getting_started-5.0.1.pdf 那里也有这个topic:《Advanced Shell Usage - Job Control Mode》,不知道为何官方html格式的文档那里消失了。
简单来说是这样,比如节点 foo@192.168.0.2 启动了一个daemon
- erl -name foo@192.168.0.2 -setcookie 123456 -noshell -noinput ...
注:即,无shell,无输入,可以理解为以无界面的方式启动。
注:选项 setcookie 是指定 magic cookie ,这个参数也可以在文件中指定。这是 erlang 的“要么就都没有,要么就全权控制”的安全机制,两个 erlang 的 node 如果需要通讯,必须要有相同的 magic cookie。也就是说,你如果知道目标机器的 magic cookie 你就可以远程管理它。
如果要管理它,可以这样:
- # ./start.sh -name bar@192.168.0.3 -setcookie 123456
- Erlang (BEAM) emulator version 5.5.4 [source] [async-threads:0] [hipe] [kernel-poll:false]
- Eshell V5.5.4 (abort with ^G)
- (bar@192.168.0.3)1>
- User switch command
- --> h
- c [nn] - connect to job
- i [nn] - interrupt job
- k [nn] - kill job
- j - list all jobs
- s - start local shell
- r [node] - start remote shell
- q - quit erlang
- ? | h - this message
- --> j
- 1* {shell,start,[init]}
- --> r 'foo@192.168.0.2'
- --> j
- 1 {shell,start,[init]}
- 2* {'foo@192.168.0.2',shell,start,[]}
- --> c 2
- Eshell V5.5.4 (abort with ^G)
- (foo@192.168.0.2)1> nodes().
- ['bar@192.168.0.3']
比用什么rpc的方便多了
btw:Control+G无法在win下的shell里面使用~
注: Control+G 在 windows 下的 erl 中的确不能用,但在 werl (另一个 shell 界面)中可以照样用,windows 下 werl 的热键与文档保持高度一致。


Write a Comment