EC2 Amazon Web Services 上的 Linux 实例上的“nohup”问题

pi3*_*.14 6 linux ubuntu nohup amazon-ec2 aws

我正在 Amazon Web Services EC2 上开发 Ubuntu 系统。我已经创建了一个实例,需要在系统上运行 node.js 服务器。一旦我 ssh 进入我的工作目录并使用以下命令,

:~/Test1$ node server.js
Run Code Online (Sandbox Code Playgroud)

服务器工作正常。代码运行没有任何问题

现在,我想要的是即使在终端关闭时也运行 server.js 代码,作为后台进程。为此,我使用nohup命令&

:~/Test1$ nohup node server.js &
Run Code Online (Sandbox Code Playgroud)

这也使 server.js 启动,但该nohup命令似乎不起作用,因为当我关闭终端时 server.js 停止工作。sudo我也用命令尝试了代码

:~/Test1$ nohup sudo node server.js &
Run Code Online (Sandbox Code Playgroud)

但它什么也没做。

我究竟做错了什么?而且,我该如何让它发挥作用?谢谢。

小智 5

我有完全相同的问题。我像你一样运行我的节点服务器:

nohup node server.js &
Run Code Online (Sandbox Code Playgroud)

通过这种方式,进程在终端会话中运行,这就是终端会话保持打开状态时进程寿命更长的原因。

相反,尝试在单独的会话中运行该过程:

setsid nohup node serve.js &
Run Code Online (Sandbox Code Playgroud)

按这种方式尝试,它对我有用。

  • 对于 Amazon EC2 Linux 实例,我使用远程命令“nohup myshell.sh > 2>&1 &”从 Windows 运行 SSH,AWS 实现了自己的断开连接处理程序,但不知何故仍然会终止该进程。“这个答案实际上有效”保持了进程(在我的例子中启动了一个java服务器)的活动,允许我从远程“部署”。 (2认同)