TypechoJoeTheme

MetMan's Blog

网站页面

TMOUT引起服务器断开连接解决方法

MetMan博 主
2024-08-10
/
0 评论
/
38 阅读
/
386 个字
/
百度已收录
08/10
本文最后更新于 2024年08月10日,已超过 40天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

服务器管理员为了系统安全性和减少开销,一般会设置一定时间内shell没有活动自动断开连接。但如果设置时间过短,查查资料/休息下,再回终端工作发现已经退出登录是挺烦恼的。

那么如何绕过这个限制保持SSH会话长时间在线?

TMOUT变量

首先我们要确认管理员如何实现该功能的。

原先我以为自动断开连接是通过SSH配置实现的,后来发现是通过shell的TMOUT环境变量实现的。

管理员会在系统配置文件/etc/profile中设置TMOUT值,并将其设为只读变量。

export TMOUT=1200   # 保持在线1200秒,不活动退出
readonly TMOUT

普通用户没有权限unset这个只读变量,这样用户就不能关闭这个自动退出功能了。

$ unset TMOUT 
-bash: unset: TMOUT: cannot unset: readonly variable

解决方法

方法一

一种解决思路是保持shell繁忙,可以在~/.bashrc加上一段代码:

# ~/.bashrc 
alias bs="while sleep 1000; do printf '\33[0n'; done"

以上代码功能是:while死循环,每隔1000秒会输出一个转移字符。这个转义字符ChatGPT回答如下

或者设置

# ~/.bashrc 
alias bs="watch -n 1000 date"

watch命令每隔1000秒执行date命令并输出结果到屏幕上,可以当做时钟。

以上功能退出方式是键入Ctrl-C快捷键。

方法二

另一种思路是在登录shell时不读取/etc/profile,但这种方法很麻烦,也会影响shell一些基本设置。


文后参考链接中提到的一些其它方法测试没有效果。如果你有更好的方法,欢迎留言。

参考资料

https://unix.stackexchange.com/questions/222283/read-only-tmout-variable-workaround-to-disable-automatically-exit-shell-when-t

shell
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

MetMan's Blog

本文链接:

https://blog.metman.top/index.php/archives/138/(转载时请注明本文出处及文章链接)

评论 (0)

互动读者

标签云

最新回复

暂无回复

登录
X
用户名
密码