【发布时间】:2015-02-24 17:40:37
【问题描述】:
我正在使用 rebar 来发布 erlang 应用程序,当我使用启动选项启动应用程序时,它在后台运行良好,它返回命令提示符。我不想看到所有的后台输出,所以我没有使用控制台选项运行。但是如果我需要任何时间在后台发生什么,由于任何错误检查控制台,我如何获得正在运行的应用程序的控制台?
【问题讨论】:
我正在使用 rebar 来发布 erlang 应用程序,当我使用启动选项启动应用程序时,它在后台运行良好,它返回命令提示符。我不想看到所有的后台输出,所以我没有使用控制台选项运行。但是如果我需要任何时间在后台发生什么,由于任何错误检查控制台,我如何获得正在运行的应用程序的控制台?
【问题讨论】:
我猜您已经使用 Rebar 进行了发布,并且您已经使用生成的启动脚本启动了节点。
所以最好的方法是使用启动选项“附加”:
./bin/mynode attach
它将通过管道连接到外壳,因此您将处于正在运行的实际节点中,因此请小心使用 Ctrl-c。 (将选项“+Bi”添加到您的 vm.args 文件以限制它..)
【讨论】:
您可以将远程 shell 连接到节点,前提是它已设置为分发。使用以下命令:
erl -sname rem -remsh node@host -setcookie the_cookie -hidden
【讨论】:
Ctrl-G 进入 JCL 模式,然后 'j' 进入列表,然后 'c' 后跟一个数字连接到所选作业。请参阅eshell docs,特别是 JCL 部分。
哦,或者如果“命令提示符”是指 OS shell 而不是 Erlang shell,IIRC 你需要启动一个适当的 -name'd 或 -sname'd 的 Erlang 节点(无论你想要哪个节点连接到用户),然后连接到该节点(JCL 模式中的“r”),然后连接到作业。
【讨论】: