【发布时间】:2023-04-02 00:21:01
【问题描述】:
我知道我们可以使用 control-C 退出 IEX 控制台。我很好奇是否有一个命令可以输入到控制台中来做同样的事情。
【问题讨论】:
标签: elixir elixir-iex
我知道我们可以使用 control-C 退出 IEX 控制台。我很好奇是否有一个命令可以输入到控制台中来做同样的事情。
【问题讨论】:
标签: elixir elixir-iex
我一直以为ctrl-G 其次是q 退出 是退出 iex shell 的官方方式。
请参阅 IEx 文档的 section on the BREAK menu,其中还显示了如何在备用 shell 等之间切换。
【讨论】:
q。请注意,BREAK 菜单可用于退出。但菜单本身也不包含(q)uit 选项,所以现在看起来完全没有记录。
断开与 shell 的连接并停止当前节点。这是您在大多数情况下所需要的。
1.1。 Ctrl+\ - 退出 Erlang shell 的标准方法。请参阅“4.4 如何退出 Erlang shell?”在Erlang -- Getting Started。
1.2。 Ctrl+C, a, Enter - 通过Break 菜单的(a)bort 命令。
1.3。 Ctrl+C, Ctrl+C - 看起来像是 Break 菜单的未记录功能。
1.4。 Ctrl+G, q, Enter - 通过User Switch 菜单的q(退出erlang)命令(参见Erlang -- shell -- JCL Mode)。
注意:如果您使用iex --remsh 连接到远程节点(请参阅iex --help 和IEx -- Remote Shells),这会使远程节点保持活动状态。
关闭您连接的节点。
2.1。 System.halt - 快速而肮脏的关闭。运行时系统以状态码 0 退出(干净退出,没有错误)。您也可以调用System.halt(:abort) 以使用核心转储中止。同:erlang.halt。
2.2。 :init.stop(未来版本为System.stop)- 干净关机。顺利关闭所有应用程序,卸载所有代码,并在系统终止前关闭所有端口,调用halt(Status)。
注意:如果您已使用 iex --remsh 连接到远程 shell,这会使 您的 shell 活着。
请注意,如果 Erlang 以忽略中断、+Bi、系统标志:iex --erl +Bi(这可能很有用,例如在运行受限 shell 时)启动,则所有这些选项都将被禁用。请参阅Erlang -- erl 了解更多信息。
【讨论】:
在shell中输入
:c.q()
并且快乐
【讨论】:
我能想到 3 种退出 IEx shell 的方法:
<ctrl-c>点击两次或一次,然后是q,然后是<enter>,<ctrl-g> 然后q + <enter>,System.halt,但是System.halt 和其他的有区别。
即System.halt“停止 Erlang 运行时”而其他只是“退出 shell”。
当您只有一个 shell 会话正在运行或会话未附加到单独的运行时,那么两种方式都会产生相同的结果。
但是,如果您有一个连接到单独运行时的会话,例如通过iex --remsh(远程shell)然后在其中运行System.halt将停止运行时,因此使两个shell进程/运行时终止。仅仅退出一个 shell(通过方法 1. 或 2.)不会停止它所连接的运行时。
结论:如果你用你的 shell 连接到其他运行时,那么知道System.halt 将停止你连接到的运行时。如果您不想这样做,请使用<ctrl-c>。
更新:最近我还发现了<ctrl-\>。你可以在this article阅读更多内容:
我不知道的是,你可以通过发送 Ctrl- 来退出 shell。 shell 将立即退出。据我所知,它具有相同的 在 Break 命令中中止 shell 的效果,它不影响 远程节点,它也可以在 iex 之外工作(例如,您可以 用于终止您的测试)。
【讨论】:
:init.stop 可以优雅地停止 erlang 虚拟机。
看起来
System.halt
也可以。
【讨论】: