2010-11-01 49 views
4

不知何故,這不是谷歌搜索產生的。如何啓動一個當我的SSH會話結束時不會結束的進程?

我正在爲node.js中的服務器編寫腳本。我通過與節點程序執行的腳本啓動服務器:

節點myserver.js

但一直服務器是依賴於我的SSH會話。我怎樣才能使這個(和所有這樣的過程)持久? init.d中?

+1

我認爲這更多的是在系統管理的範圍之內,並且更適合服務器故障。 – meagar 2010-11-01 17:46:46

+0

類似的問題http://serverfault.com/q/311593/87375 – 2014-03-18 04:08:01

回答

11

使用nohup命令:

http://en.wikipedia.org/wiki/Nohup

nohup的是POSIX命令忽略HUP(掛起)信號,使命令繼續運行誰發出該命令的用戶登錄後出。按照慣例,HUP(掛斷)信號是終端警告取決於註銷過程的方式。

試試這個:

nohup node myserver.js & 
+0

是否有&符號故意在那裏? – mkrecny 2010-11-01 17:51:37

+0

@ user470520,是的,這是故意的,因爲這表明shell在後臺運行此命令。如果您想了解更多信息,請閱讀更多關於作業控制的內容:http://www.gnu.org/software/bash/manual/bashref.html#Job-Control – 2010-11-01 18:20:49

3

你試過GNU screen?使用它,當你結束你的SSH會話時,一個進程可以繼續運行。 nohup是一個標準的* nix命令,可以讓你做同樣的事情,儘管以更有限的方式。

1

使用屏幕。從終端鍵入屏幕,然後啓動您的過程。如果斷開連接,您可以重新連接到ssh會話,通過輸入'screen -ls'(查看活動屏幕)和'screen -r'重新連接。

0

nohup很好地運行下的工作。如果作業已經運行,你可以嘗試disown -h(至少在bash中)