Erlang-China

erlang 中文社区

【转】Erlang 里面使用Remote shell


原文地址:avindev.javaeye.com
原文作者:AvinDev

今天无意中发现这个功能。。。

ejabberd.jabber.ru

在下载的 getting_started-5.0.1.pdf 那里也有这个topic:《Advanced Shell Usage - Job Control Mode》,不知道为何官方html格式的文档那里消失了。

简单来说是这样,比如节点 foo@192.168.0.2 启动了一个daemon

  1. erl -name foo@192.168.0.2 -setcookie 123456 -noshell -noinput ...

注:即,无shell,无输入,可以理解为以无界面的方式启动。
注:选项 setcookie 是指定 magic cookie ,这个参数也可以在文件中指定。这是 erlang 的“要么就都没有,要么就全权控制”的安全机制,两个 erlang 的 node 如果需要通讯,必须要有相同的 magic cookie。也就是说,你如果知道目标机器的 magic cookie 你就可以远程管理它。

如果要管理它,可以这样:

  1. # ./start.sh -name bar@192.168.0.3 -setcookie 123456
  2. Erlang (BEAM) emulator version 5.5.4 [source] [async-threads:0] [hipe] [kernel-poll:false]
  3.  
  4. Eshell V5.5.4 (abort with ^G)
  5. (bar@192.168.0.3)1>
  6. User switch command
  7. --> h
  8. c [nn] - connect to job
  9. i [nn] - interrupt job
  10. k [nn] - kill job
  11. j - list all jobs
  12. s - start local shell
  13. r [node] - start remote shell
  14. q - quit erlang
  15. ? | h - this message
  16. --> j
  17. 1* {shell,start,[init]}
  18. --> r 'foo@192.168.0.2'
  19. --> j
  20. 1 {shell,start,[init]}
  21. 2* {'foo@192.168.0.2',shell,start,[]}
  22. --> c 2
  23. Eshell V5.5.4 (abort with ^G)
  24. (foo@192.168.0.2)1> nodes().
  25. ['bar@192.168.0.3']

比用什么rpc的方便多了
btw:Control+G无法在win下的shell里面使用~

注: Control+G 在 windows 下的 erl 中的确不能用,但在 werl (另一个 shell 界面)中可以照样用,windows 下 werl 的热键与文档保持高度一致。







Write a Comment

Note: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>