2013-07-13 53 views
2

我的iPhone上有一個名爲iTerminal的應用程序。我SSH到我的亞馬遜實例,並啓動服務器,它很好(這是一個.jar文件)。但是,當我退出iTerminal應用程序時,服務器關閉。是什麼賦予了?!我認爲服務器正在運行!我的服務器可以關閉的唯一方法是如果我發出退出命令。這根本不符合邏輯。退出iTerminal時關閉服務器

+0

這也發生在Mac上的終端上。當終端關閉時,如何停止服務器/文件停止運行。 – raaj

回答

2

您需要從您的shell分離服務器進程。您的服務器是shell的子進程,當shell退出時,系統會終止shell的子進程。要做到這一點

的方法之一是使用nohup從外殼像這樣在後臺運行的進程:

nohup /your/server/command &

nohup成爲子進程,正如它的名字所暗示的,它會忽略通常發送給子進程的掛斷(HUP)信號。

&所以你得到一個shell提示符後面在後臺運行的命令。當你退出shell時,服務仍然應該作爲一個獨立的進程運行。

1

我發現:

只需鍵入 '屏幕' 然後運行您的服務器/命令。

現在,當您退出終端時,它不會終止應用程序。

+0

雖然這會起作用,但是'screen'是一個完整的窗口管理器,對於僅僅分離一個進程而言是一個矯枉過正的東西。我建議我提到的nohup解決方案更合適。 – ianjs