如果我不关闭ssh会话会发生什么?

时间:2016-05-18 06:36:19

标签: python session ssh sftp conceptual

我是Python的新手。目前我正在使用它通过ssh连接到远程服务器,做一些事情(包括复制文件),然后关闭会话。

每次会话结束后,我都会ssh.close()sftp.close()。我这样做是因为这是我在互联网上找到的典型方式。

我想知道如果我在没有关闭会话的情况下完成我的脚本会发生什么。这会影响服务器吗? 这会在服务器上产生某种(甚至非常小的)负载吗? 我的意思是我们为什么要这样做呢?

2 个答案:

答案 0 :(得分:3)

当进程关闭时(本地)操作系统关闭进程打开的任何挂起的TCP / IP连接(即使它只是崩溃)。

因此,即使您不关闭SSH会话,最终也会关闭SSH会话。显然,如果没有正确的SSH清理,它会突然关闭。因此,它可能会在服务器日志中触发一些警告。

当流程长时间运行时,关闭会话尤其重要,但会话本身仅在短时间内使用。

无论如何,无论如何关闭会话都是一种很好的做法。

答案 1 :(得分:3)

我们在使用后关闭会话,以便正确/轻松地完成清理(关闭与之关联的所有正在运行的进程)

当您 ssh.close()时,它会生成SIGHUP信号。此信号会自动/立即终止终端下的所有任务/进程。

当您突然结束没有close() 的会话时,操作系统最终会知道连接丢失/断开连接并且启动相同的{{1} } signal ,它关闭了大多数开放的流程/子流程。

即使在SIGHUP之后仍然存在少数流程继续运行等问题,因为它们SIGHUP选项启动(或者以某种方式与当前会议脱离关系。)