如何通过 ssh 隧道让我的守护进程保持打开状态?

How do I keep my daemon open through ssh tunnel?

我一直在开发接受连接的 http 服务器,然后根据主机名从 .so 加载正确的项目,生成客户端请求的页面,然后将它们发回。 现在我有几个工作项目,我有兴趣将它们提供给其他人,但这是我的问题:

我正在通过 ssh 连接到我的专用服务器,并从那里启动我的守护程序,但过了一会儿,页面不再可访问,因为我的程序不再 运行。 一段时间后我也被服务器踢了。我想知道 : 如何保留我的服务器 运行 ?我在闲置一段时间后不断被 ssh 踢出这一事实是否解释了为什么我的守护程序被关闭?

在此先感谢能够给我一些答案的人。

当您的 SSH 会话超时时,SIGHUP 被发送到从当前交互 shell 派生的子进程。这就是进程终止的原因(服务器不再 运行)。

为避免闲置的 SSH 连接被服务器踢掉,请设置 ServerAliveInterval 以发送服务器响应请求(例如 ~/.ssh/config

Host * ServerAliveInterval 30

为了避免shell子进程终止,参考

简而言之,有3个选项:

  • nohup
  • disown / setsid
  • 在服务器 tmuxscreen 会话中的 CLI 中启动服务器

NOTE: If the server instances are already properly daemonized, try looking at monit or supervisord to keep them running ;-D