我刚开始学习Python。目前我正在使用它通过ssh连接到远程服务器,做一些事情(包括复制文件),然后关闭会话。
每次会话结束后,我都会执行ssh.close()
和sftp.close()
。我这样做只是因为这是我在互联网上找到的典型方式。
我想知道如果我没有关闭会话而直接完成脚本会发生什么。这会影响服务器吗?这会对服务器产生某种(甚至非常小的)负载吗?我的意思是我们为什么要这样做呢?
我刚开始学习Python。目前我正在使用它通过ssh连接到远程服务器,做一些事情(包括复制文件),然后关闭会话。
每次会话结束后,我都会执行ssh.close()
和sftp.close()
。我这样做只是因为这是我在互联网上找到的典型方式。
我想知道如果我没有关闭会话而直接完成脚本会发生什么。这会影响服务器吗?这会对服务器产生某种(甚至非常小的)负载吗?我的意思是我们为什么要这样做呢?
ssh.close()
时,它会生成一个 SIGHUP
信号。此信号会自动/立即杀死终端下的所有任务/进程。close()
时,操作系统最终会知道连接已丢失/断开,并启动相同的 SIGHUP
信号,关闭大多数打开的进程/子进程。SIGHUP
后仍然继续运行,因为它们是使用 nohup
选项启动的(或者以某种方式与当前会话脱离了关系)。