SSH 会话关闭,而虚拟环境会话保持打开(我认为)

SSH 会话关闭,而虚拟环境会话保持打开(我认为)

我最近一直在使用 Flask 开发一些网站(在虚拟环境中的 Debian 上运行),当我进行测试时,我可以在端口上运行它,比如说发布5000

因此我像这样运行脚本:

. env/bin/activate           <- go into virtual environment
python file.py               <- run python script

我将得到这样的信息:

Running on http://0.0.0.0:5000/

所以这一切都很顺利,我可以通过这个端口正常访问我的网站。但是……我的垃圾 ISP 总是会这样,每天早上 1 点左右重置某些东西。我不知道这是怎么回事,一切都运行正常,但我总是断开与任何打开的 SSH 会话的连接。这让它继续运行,我所能做的就是调用:

lsof -i

这将向我显示该过程,但如果我终止它然后重新运行它,事情就会变得奇怪。

Running on http://0.0.0.0:5000

消息仍然显示,但我无法再连接到它。我尝试更改端口号,似乎唯一有效的方法是稍后或另一天再试一次。现在我假设我的服务器上的某些东西在这段时间之间重置了,我想这可能是虚拟环境会话超时,但我找不到如何手动执行此操作,有人知道吗?

答案1

我不确定那里发生了什么,但如果你的 ssh 连接不稳定,请使用 tmux。

tmux

它将打开一个位于容器内的终端会话,您可以稍后重新连接到该容器。如果会话断开连接,该虚拟终端内运行的任何程序都将继续运行。因此,在您被踢出后,请重新 ssh 并运行

tmux attach

然后您就可以从上次中断的地方继续。

还有另外一个更老的程序也可以实现这个功能,也叫做“screen”,虽然它更常见,但却没有得到积极的维护。

相关内容