如何將Node.js做爲後臺進程運行而且永不消亡?

我經過膩子SSH鏈接到linux服務器。 我試圖將其做爲這樣的後臺進程運行: node

$ node server.js &

可是,在2.5小時後,終端變爲非活動狀態,該過程終止。 不管如何,即便在終端斷開鏈接的狀況下,我仍然能夠保持該過程正常進行嗎? linux


編輯1 shell

實際上,我嘗試了nohup ,可是一旦我關閉Putty SSH終端或拔出Internet插頭,服務器進程就會當即中止。 centos

在膩子裏我有什麼須要作的嗎? 服務器


編輯2(2012年2月) spa

永遠有一個node.js模塊。 它將做爲守護程序服務運行node.js服務器。 日誌


#1樓

nohup node server.js > /dev/null 2>&1 & code

  1. nohup意思是: 即便終止了筆勢也不要終止此過程。
  2. > /dev/null表示: stdout轉到/ dev / null(這是一個不記錄任何輸出的虛擬設備)。
  3. 2>&1表示: stderr也轉到stdout(已經重定向到/dev/null )。 您能夠將&1替換爲文件路徑以保留錯誤日誌,例如: 2>/tmp/myLog
  4. &表示最後: 將此命令做爲後臺任務運行。

#2樓

另外一個解決方案取消了工做 server

$ nohup node server.js &
[1] 1711
$ disown -h %1

#3樓

您確實應該嘗試使用screen 。 這比只作nohup long_running &要複雜一些,可是一旦您再也沒有回來,便要了解屏幕。 進程

首先開始您的屏幕會話:

user@host:~$ screen

運行任何您想要的:

wget http://mirror.yandex.ru/centos/4.6/isos/i386/CentOS-4.6-i386-binDVD.iso

按ctrl + A,而後按d。 作完了 您的會話一直在後臺進行。

您能夠經過screen -ls列出全部會話,並經過screen -r 20673.pts-0.srv命令附加到某些screen -r 20673.pts-0.srv ,其中0673.pts-0.srv是條目列表。


#4樓

根據@Yoichi的回答,個人shell rc文件中具備此功能:

nohup-template () {
    [[ "$1" = "" ]] && echo "Example usage:\nnohup-template urxvtd" && return 0
    nohup "$1" > /dev/null 2>&1 &
}

您能夠經過如下方式使用它:

nohup-template "command you would execute here"

#5樓

$ disown node server.js &

它將從活動任務列表中刪除命令,並將命令發送到後臺

相關文章
相關標籤/搜索