我通过putty SSH连接到linux服务器。我试着把它作为后台进程运行,就像这样:

$ node server.js &

然而,2.5小时后,终端变得不活动,进程死亡。有没有办法,我可以保持进程活着,即使终端断开?


编辑1

实际上,我尝试了nohup,但只要我关闭Putty SSH终端或拔掉互联网,服务器进程就会立即停止。

我需要在腻子里做什么吗?


编辑2(2012年2月)

有一个node.js模块,永远存在。它将运行node.js服务器作为守护服务。


当前回答

nohup节点服务器.js > /dev/null 2>&1 &

nohup的意思是:即使stty被切断,也不要终止这个进程 掉了。 > /dev/null意味着:stdout到/dev/null(这是一个dummy 不记录任何输出的设备)。 2>&1表示:stderr也转到stdout(已经重定向到/dev/null)。您可以将&1替换为文件路径以保存错误日志,例如:2>/tmp/myLog 结尾的&表示:将此命令作为后台任务运行。

其他回答

对于Ubuntu,我使用这个:

(exec PROG_SH &> /dev/null &)

问候

nohup节点服务器.js > /dev/null 2>&1 &

nohup的意思是:即使stty被切断,也不要终止这个进程 掉了。 > /dev/null意味着:stdout到/dev/null(这是一个dummy 不记录任何输出的设备)。 2>&1表示:stderr也转到stdout(已经重定向到/dev/null)。您可以将&1替换为文件路径以保存错误日志,例如:2>/tmp/myLog 结尾的&表示:将此命令作为后台任务运行。

我在我的shell rc文件中有这个函数,基于@Yoichi的回答:

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

你可以这样用:

nohup-template "command you would execute here"

除了上面提到的很酷的解决方案,我还提到了监督和监控工具,这些工具允许启动进程,监控进程的存在,并在进程死亡时启动进程。使用“monit”,您还可以运行一些主动检查,如检查进程是否响应http请求

试试这个简单的解决方法

CMD & exit