计算机睡眠时是否可以保持SSH会话存活?当我让我的Mac(狮子)睡了一小段时间,然后唤醒它仍然活着的会话,但如果我一夜之间离开会话连接关闭.
我试过试过:
ClientAliveInterval 3600 ClientAliveCountMax 10
同样的结果
为什么会话在短时间内"存活"?如何控制此超时?
Ale*_*pov 16
我发现答案取决于tcp keepalive设置:
有关可用TCP设置的列表(FreeBSD 4.8 an up和5.4):
sysctl -A | grep net.inet.tcp
Run Code Online (Sandbox Code Playgroud)
net.inet.tcp.keepidle - 发送keepalive探测(如果已启用)之前(TCP)连接必须处于空闲状态的时间(以毫秒为单位).
net.inet.tcp.keepintvl - 发送到远程计算机的keepalive探测之间的间隔(以毫秒为单位).发送TCPTV_KEEPCNT(默认为8)探测器后,如果没有响应,则删除(TCP)连接.
net.inet.tcp.always_keepalive - 假设在所有TCP连接上设置了SO_KEEPALIVE,内核将定期向远程主机发送数据包以验证连接是否仍在运行.
因此,计算最大TCP非活动连接时间的公式如下:
net.inet.tcp.keepidle + (net.inet.tcp.keepintvl x 8)
Run Code Online (Sandbox Code Playgroud)
结果以毫秒为单位.因此,通过设置
net.inet.tcp.keepidle = 10000 net.inet.tcp.keepintvl = 5000 net.inet.tcp.always_keepalive = 1 (must be 1 always)
Run Code Online (Sandbox Code Playgroud)
当TCP连接断开时,系统将断开呼叫:10000 + (5000 x 8) = 50000msec(50秒).要使系统在启动时记住这些设置,您应该将它们添加到/etc/sysctl.conf文件中
如果你想要一个优雅的解决方案来保持远程会话活着,你应该检查screen一下.使用此实用程序时,即使在注销或关闭计算机后,也可以使远程程序保持运行.然后,您可以screen稍后重新连接可用会话.
屏幕需要一些时间来学习基础知识,但是当你掌握它时,你会发现它有多强大.
您可以查看此链接以获取有关使用屏幕的教程:http://www.thegeekstuff.com/2010/07/screen-command-examples/
| 归档时间: |
|
| 查看次数: |
33618 次 |
| 最近记录: |