进程在终端会话结束时退出,即使它是一个后台进程

进程在终端会话结束时退出,即使它是一个后台进程

我使用 ssh 连接到我的 VPS。我运行npm run start &以在后台启动我的 next.js 网站。一切正常。

一旦我断开 SSH 会话,我的网站就会停止。

我怎样才能强制该进程继续运行?

答案1

所有在后台启动的进程都会在启动它们的 shell 终止后立即终止,这是很正常的。当您退出会话时,它们都会收到 SIGHUP 信号。

nohup可用于启动与终端会话断开连接的进程,也可与 stdin 和 stdout 断开连接,并且不受来自终端的 SIGHUP 信号的影响。进程的输出将重定向到文件nohup.out

您还可以在服务器端使用终端多路复用器,如 GNU screen 或 tmux。多路复用器允许您“分离”终端,这样即使您退出 SSH 连接,进程仍会继续运行。重新连接时,您可以重新连接以继续工作。

相关内容