2010-03-29 42 views
6

我有一個作爲守護程序運行的Erlang應用程序,配置爲SSH服務器。我可以通過SSH客戶端連接到它,並獲得標準的Erlang REPL。從SSH會話註銷到Erlang VM而不停止虛擬機或保留過期的進程

If I'q()。'我關閉了Erlang虛擬機,而不是連接。 如果我關閉連接('〜。'for OpenSSH,關閉窗口在PuTTY中),一些進程保留在sshd_sup/ssh_system_xx_sup樹下。這些似乎是過時的shell進程。

我在shell模塊中看不到任何導出的函數,它們會讓我關閉shell(並因此關閉SSH連接)而不影響整個VM。

我應該如何註銷SSH會話纔不會在虛擬機中留下陳舊的進程?

回答

4

'exit()。'在SSH客戶端中關閉連接而不停止虛擬機。

我無法在任何地方找到這個記錄,但它似乎幾乎做我想要的。

而不是每個終止的連接,像殺死客戶端,離開4陳舊的進程'exit()'。留下2個陳舊的過程。

現在可能處於'ssh'模塊的領域,不再處於'shell'模塊的領域。

+0

它不會爲我(R15B01)帶有'〜。和exit()'行爲的任何陳舊過程: '4> erlang:system_info(process_count)。系統信息(process_count)。%erh:system_info(process_count)。 53' '%通過「〜」終止會話。或「exit()」erlang:system_info(process_count)。 43' – seriyPS 2013-02-07 00:03:40