erlang shell是用户与 erlang 运行时系统交互的界面程序。事实上,erlang VM的运行不依赖任何shell,只要在启动的时候添加参数detached就可以脱离终端。
-
detached
Starts the Erlang runtime system detached from the system console. Useful for running daemons and backgrounds processes. Implies -noinput.
实际上,detached 等效于noshell 加上 noinput。
# erl -
detached -emu_args
Executing: /home/erl/lib/erlang/erts-5.10.3/bin/beam /home/erl/lib/erlang/erts-5.10.3/bin/beam -- -root /home/erl/lib/erlang -progname erl -- -home /root -- -noshell -noinput
Executing: /home/erl/lib/erlang/erts-5.10.3/bin/beam /home/erl/lib/erlang/erts-5.10.3/bin/beam -- -root /home/erl/lib/erlang -progname erl -- -home /root -- -noshell -noinput
另外,需要注意的是,windows不直接支持detached,而是以服务的形式在后台运行,见
erlsrv
现在讨论erlang 接入远程shell控制台的几种方式。
作业(JCL )模式
在 Erlang shell 中按下^G键,就可以看到作业控制模式(JCL mode)的菜单。在菜单中,有
个选项能让我们连接到一个远程 shell。
先以detached运行一个节点1:
# erl -name
1@127.0.0.1 -setcookie 123456 -detached
检查这个erlang进程是否运行
# ps -ef | grep beam
root 20672 1 0 01:32 ? 00:00:00 /home/erl/lib/erlang/erts-5.10.3/bin/beam -- -root /home/erl/lib/erlang -progname erl -- -home /root -- -name
1@127.0.0.1
-setcookie 123456 -noshell -noinput
启动另外一个节点2,并接入到节点1
# erl -name
2@
|