在Linux SSH Shell中,键入/etc/init.d/network restart
以重新启动网络服务。
由于网络服务中断,我希望我的SSH连接断开。但事实并非如此。很酷。但是Linux如何实现这一目标?如何在服务重新启动期间使我的SSH连接保持活动状态?
在Linux SSH Shell中,键入/etc/init.d/network restart
以重新启动网络服务。
由于网络服务中断,我希望我的SSH连接断开。但事实并非如此。很酷。但是Linux如何实现这一目标?如何在服务重新启动期间使我的SSH连接保持活动状态?
Answers:
它没有做任何特别的事情。网络重新启动的时间少于TCP连接超时所需的时间,因此TCP连接可以承受“中断”的方式与承受任何瞬时网络中断的方式相同。
Windows不做同样的事情的唯一原因是因为Windows专门在网络接口出现故障时重置TCP连接。至少可以说,这是一件相当愚蠢的事情,因为TCP是专门为承受瞬态网络中断而设计的。
SSHD在连接上派生一个子进程。如果重新启动SSHD或整个网络,此子进程将不会消失。这就是为什么您可以更新ssh和/或其配置,执行a service sshd restart
并仍然使用旧设置保持与旧ssh会话保持连接的原因。除此之外,ssh还可以从小型网络中断中恢复良好。
sshd
避免失败的见解service sshd restart
。如果您进行更新sshd
(安全更新等),则子进程仍将在原始代码上运行(预更新),但将继续提供服务,而不是被中断。我猜主sshd
进程的侦听套接字的可用性非常短暂地被中断,但是,当第一个子进程结束并且网络接口暂时指示该端口处于关闭状态时。