我在后台开始使用以下过程:
erl -s system start -detached
我需要杀死这个过程。有没有办法杀死在后台运行的所有进程?
我试过了:
init:reboot()
答案 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控制台,将其连接到第一个控制台并执行所有必要的操作以正确终止它。
您需要知道目标节点的名称。从您的示例节点启动时没有任何名称,您可以通过添加标记-name
-sname
来提供它:erl -sname node_1 -s system start -detached
启动另一个名称不同的节点:erl -sname node_2
使用^G
node_2
(控件G)
按r
并输入第一个节点的名称:node_1@localhost
(或其具有的任何名称)
按c
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().