Erlang:杀死在后台运行的所有进程

时间:2013-03-17 18:36:08

标签: process erlang kill

我在后台开始使用以下过程:

erl -s system start -detached

我需要杀死这个过程。有没有办法杀死在后台运行的所有进程?

我试过了:

init:reboot()

2 个答案:

答案 0 :(得分:7)

如果要杀死系统上所有正在运行的erlang进程,可能会以超级用户身份运行它。在bash shell中:

for i in `ps -ef | grep erl | awk '{print $2}'`; do echo $i; kill -9 $i; done

答案 1 :(得分:1)

实现这一目标的一种方法是启动另一个erlang控制台,将其连接到第一个控制台并执行所有必要的操作以正确终止它。

  1. 您需要知道目标节点的名称。从您的示例节点启动时没有任何名称,您可以通过添加标记-name -sname来提供它:erl -sname node_1 -s system start -detached

  2. 启动另一个名称不同的节点:erl -sname node_2

  3. 使用^G

  4. 在终端上按node_2(控件G)
  5. r并输入第一个节点的名称:node_1@localhost(或其具有的任何名称)

  6. c

  7. Eshell V5.10.1 (abort with ^G)
    (node_2@localhost)1>
    User switch command
    --> r 'node_1@localhost'
    --> c
    Eshell V5.10.1 (abort with ^G)
    (node_1@localhost)1>

    你shell看到带有第一个节点名称的新提示符。现在,您的所有命令都将在第一个节点上执行。要终止第一个节点,您可以键入erlang:halt().