如何将Node.js作为后台进程运行并且永不消亡?

柔情痞子 提交于 2020-02-28 10:21:41

我通过腻子SSH连接到linux服务器。 我试图将其作为这样的后台进程运行:

$ node server.js &

但是,在2.5小时后,终端变为非活动状态,该过程终止。 无论如何,即使在终端断开连接的情况下,我仍然可以保持该过程正常进行吗?


编辑1

实际上,我尝试了nohup ,但是一旦我关闭Putty SSH终端或拔出Internet插头,服务器进程就会立即停止。

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


编辑2(2012年2月)

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


#1楼

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

  1. nohup意思是: 即使终止了笔势也不要终止此过程。
  2. > /dev/null表示: stdout转到/ dev / null(这是一个不记录任何输出的虚拟设备)。
  3. 2>&1表示: stderr也转到stdout(已经重定向到/dev/null )。 您可以将&1替换为文件路径以保留错误日志,例如: 2>/tmp/myLog
  4. &表示最后: 将此命令作为后台任务运行。

#2楼

另一个解决方案取消了工作

$ 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 &

它将从活动任务列表中删除命令,并将命令发送到后台

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!