【问题标题】:erlang: how do I end processes on my system?erlang:如何结束系统上的进程?
【发布时间】:2013-02-17 07:59:44
【问题描述】:

我在 werl shell 中运行了命令 i().,它会输出当前在我的系统上运行的进程列表。有没有办法用一个命令结束它们?

【问题讨论】:

    标签: process erlang terminate


    【解决方案1】:

    您在i(). 命令之后看到的进程都是进程,包括对VM 本身至关重要的进程。除了要停止整个 VM 之外,您不应该全部停止它们。您必须自己清理自己的流程。严重应用的推荐方式是遵循 OTP 原则。

    有两种主要方法可以停止 VM。第一个是优雅关闭,您可以使用 shell 命令 q(). 调用它,这与 init:stop(). 完全相同。这需要一段时间,但您应该在运行严重应用程序的真实系统中使用这种方式。

    第二种方法可以用于正在试验的 VM 节点或用于连接到应用程序节点的临时节点。使用erlang:halt(). 立即停止VM 有更快的方法可以使用Ctrl+C 然后aEnterCtrl+G 然后qEnter 调用这个VM。

    您可以在脚本中使用erlang:halt/0init:stop/0 或进行远程调用。

    【讨论】:

    • 我按了CTRL+C,什么也没发生,是不是CTRL+G 然后aenter?我还尝试了退出系统的erlang:halt().,但是当我重新启动并输入i().时进程并没有结束@
    • 不,Ctrl+G 做一些不同的事情,但您可以使用 Ctrl+G 然后使用 qEnterCtrl+G 更强大。请尝试h 寻求帮助。
    • 哦,你也试过erlang:halt().退出系统但是进程没有结束?它是怎么发生的?他们无处可逃吗?抱歉,您在这里遗漏了一些重要的东西。
    • 我不确定它们是否正在运行。其中一些是三天大的,我只是注意到它们在i(). 运行后存在?我不知道如何解决这个问题...
    • 我刚刚启动系统并尝试了i()。我也看到了你的流程。我完蛋了。对不起,我无法抗拒。我会尽量不取笑你。当您使用 erlang:halt() 或其他方式结束 VM 时,VM 内的所有进程都会结束。处理您在启动 VM 后看到的内容对于运行系统至关重要,您不应尝试杀死它们(例如通过 [exit(X, kill) || X
    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 2018-04-03
    • 2013-02-01
    • 2014-10-16
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多