運行的所有進程,我開始在後臺過程中使用:二郎:殺死在後臺
erl -s system start -detached
我需要殺掉該進程。有沒有辦法殺死所有在後臺運行的進程?
我想:
init:reboot()
運行的所有進程,我開始在後臺過程中使用:二郎:殺死在後臺
erl -s system start -detached
我需要殺掉該進程。有沒有辦法殺死所有在後臺運行的進程?
我想:
init:reboot()
實現此目的的一種方法是啓動另一個erlang控制檯,從它附加到第一個,並執行所有必要的事情來正確終止它。
您需要知道目標節點的名稱。在終端上erl -sname node_2
按^G
(控制G):erl -sname node_1 -s system start -detached
開始用不同的名稱另一個節點:從你的例子節點沒有任何名字開始,您可以通過添加標誌-name
-sname
這樣給它與node_2
按r
與第一節點的類型名稱:[email protected]
(或任何其命名有)
按c
Eshell V5.10.1 (abort with ^G)
([email protected])1>
User switch command
--> r '[email protected]'
--> c
Eshell V5.10.1 (abort with ^G)
([email protected])1>
你看到外殼與第一節點的名稱新的提示。現在你的所有命令都將在第一個節點上執行。要終止第一個節點,您可以鍵入erlang:halt().
虛擬機以「分離」模式啓動,因此無法訪問shell,因此發出這些shell命令是不可能的。也許如果他通過使用'rpc'模塊的遠程連接節點訪問它。 – 2013-03-19 10:21:39
它不依賴於「-tatached」標誌。如果分佈式模式打開,您可以連接到節點。嘗試做我所描述的。 – danechkin 2013-03-19 17:22:53
。在bash shell中:
for i in `ps -ef | grep erl | awk '{print $2}'`; do echo $i; kill -9 $i; done
爲什麼在投票中呢?我以爲他在談論操作系統的進程,這是我如何看待這個問題。誰投下了這個票,應該給出解釋/評論,以便未來的讀者得到相應的建議。 – 2013-03-19 10:17:41
對不起,這是我的投票。即使我們正在談論操作系統進程,使用這樣的腳本,您可以輕鬆地殺死同一臺機器上的其他erlang實例。 – danechkin 2013-03-19 17:24:56
我認爲這個問題有關鍵字'all'?可能我的英語有問題,但我認爲這個問題是談論所有過程。 – 2013-03-20 05:02:51
OS進程或Erlang進程? – rvirding 2013-03-18 08:01:55
我以爲他在談論OS進程。但有人低估了我的回答,並沒有提供任何評論。因爲他以分離模式(作爲守護進程)啓動erlang虛擬機,所以他不可能使用init:stop()。e.t.c來與它交互。那麼爲什麼有人會認爲我的答案根本沒用?這個問題甚至說'殺死'erlang進程 – 2013-03-19 10:20:11