我使用 AWS 服务器,会话bash
下的 shell ()tmux
在 20 分钟不活动后就会消失。
我这样做ssh -t myserver tmux new-session
,然后C-b d
分离。
然后
$ while sleep 60; do
date -u +'%F %T'
ssh myserver tmux ls 2>/dev/null
done
大约 20 分钟后,会话消失。
但是,如果我有两个窗口tmux
并在其中一个窗口中启动另一个进程(less
或vi
或sudo su -
或...),那么第二个窗口(普通bash
)会在 20 分钟后消失,而第一个窗口(vim
&c)将继续存在。
我以前使用过 AWS(与tmux
和screen
),这是我第一次看到这种行为。
我该如何避免这种情况?
ssh
附言:这与超时无关();当 shell 被终止时,ServerAliveInterval
我仍未建立连接。ssh
PPS。我问过这个问题服务器故障但什么也没得到,我希望它在这里更具相关性。
答案1
我遇到了类似的问题,但它不一定与 AWS 相关。
我查看了一下/etc/profile
,发现export TMOUT=$((60*60))
。从bash 文档:
如果设置为大于零的值,则 TMOUT 被视为 read 内置命令的默认超时(请参阅 Bash 内置命令)。如果在输入来自终端时,经过 TMOUT 秒后仍未收到输入,则 select 命令(请参阅条件构造)将终止。
在交互式 shell 中,该值被解释为发出主提示后等待一行输入的秒数。如果没有收到完整的一行输入,Bash 将在等待该秒数后终止。
添加unset TMOUT
到$USER/.profile
(或.bash_profile
,.bash_login
等)即可修复。