2

以下を使用して、バックグラウンドでプロセスを開始しました。

erl -s system start -detached

プロセスを強制終了する必要があります。バックグラウンドで実行されているすべてのプロセスを強制終了する方法はありますか?

私は試した:

init:reboot()
4

2 に答える 2

11

システムで実行中のすべてのerlangプロセスを強制終了する場合は、可能であればスーパーユーザーとして実行してください。bashシェルの場合:

for i in `ps -ef | grep erl | awk'{print $ 2}' `; $iをエコーし​​ます。-9$iを殺す; 終わり

于 2013-03-18T06:48:03.453 に答える
2

これを実現する 1 つの方法は、別の erlang コンソールを起動し、そこから最初のコンソールに接続し、適切に終了するために必要なことをすべて実行することです。

  1. ターゲット ノードの名前を知っている必要があります。サンプル ノードは名前なしで開始されます。次の-name -snameようにフラグを追加して指定できます。erl -sname node_1 -s system start -detached

  2. 別の名前で別のノードを開始します。erl -sname node_2

  3. ^Gで端末の (control G) を押します。node_2

  4. r最初のノードの名前を押して入力します: node_1@localhost(またはそれが持っている名前)

  5. プレス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>

最初のノードの名前を含む新しいプロンプトが表示されます。これで、すべてのコマンドが最初のノードで実行されます。最初のノードを終了するには、次のように入力できますerlang:halt().

于 2013-03-18T12:26:05.210 に答える