加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Debian SSH – Resizing终端没有注册bash

发布时间:2020-12-15 18:38:13 所属栏目:安全 来源:网络整理
导读:我们最近因磁盘故障而重新安装了我们的服务器,现在我们遇到了调整终端大小的问题.我们安装了Debian 6.0.6. 症状 当您调整终端大小时,没有基于ncurses的应用程序(已测试:ytalk,irssi,screen,tmux,某些ncurses示例应用程序)似乎正确调整大小.屏幕通常最终为空
我们最近因磁盘故障而重新安装了我们的服务器,现在我们遇到了调整终端大小的问题.我们安装了Debian 6.0.6.

症状

当您调整终端大小时,没有基于ncurses的应用程序(已测试:ytalk,irssi,screen,tmux,某些ncurses示例应用程序)似乎正确调整大小.屏幕通常最终为空白.在应用程序中强制重绘将使用旧的终端大小重绘.

在bash(4.1.5(1))提示符下调整窗口大小时,COLUMNS和LINES变量永远不会更新.

诊断

试图在bash中捕获SIGWINCH,它似乎永远不会被接收.测试结果如下:

trap 'touch /home/user/sigwinch' SIGWINCH
trap 'touch /home/user/sigusr1' SIGUSR1
kill -s SIGWINCH $$
kill -s SIGUSR1 $$

哪个应该在我的主目录中创建这两个文件.它只创建了/ home / user / sigusr1.

试图杀死-s SIGWINCH $$不会导致更新$COLUMNS / $LINES变量.

启用checkwinsize(shopt -s checkwinsize)将导致bash在从任何应用程序返回时更新$COLUMNS / $LINES(如预期的那样).调整启用了checkwinsize的终端后,会出现以下情况:

$echo $COLUMNS ; ls > /dev/null ; echo $COLUMNS
72
107

将我的登录shell更改为类似tcsh并尝试调整终端的大小可以正常工作,就像我测试的其他盒子上的bash一样.

我尝试删除我的.bashrc并没有做任何事情.对于PuTTY和Linux机箱中的某种rxvt类型终端中具有不同bash配置的其他几个用户,会出现此问题.

strace的

我在bash上运行strace并试图调整终端的大小,没有任何结果(在打印提示后它立即在读取调用时被阻止).

我在一条空线上回击,而bash做了很多东西.我认为相关的输出是:(full strace)

1: rt_sigprocmask(SIG_SETMASK,[WINCH],NULL,8) = 0
2: rt_sigaction(SIGWINCH,{0x80e2c20,[],SA_RESTART},{0x809c310,0},8) = 0
3: rt_sigprocmask(SIG_BLOCK,[INT],8) = 0
4: write(2,"aa:~$",6)                   = 6
5: rt_sigprocmask(SIG_SETMASK,8) = 0
6: rt_sigprocmask(SIG_BLOCK,8) = 0
7: read(0,

根据我的理解,这显示了bash :(我可能会误解这个.我在这里已经超出了我的元素.)

1: Disabling delivery of the SIGWINCH signal,when previously it was allowed.
2: Registering a handler for the SIGWINCH signal.
3: Masking some other combination of signals. As evidenced by line 5,this does not include SIGWINCH.
4: Printing the prompt.
5: Masking SIGWINCH,where previously nothing was blocked.
6: Masking the "union of null and SIGWINCH" which,to my understanding,would result in SIGWINCH being masked.
7: Waiting on input.

在没有这些问题的盒子上执行相同的strace(Ubuntu,bash 4.2.24(1))导致:

1: rt_sigprocmask(SIG_SETMASK,{0x49e320,SA_RESTORER|SA_RESTART,0x7f7ef49f64c0},{0x457880,SA_RESTORER,"aaaaaaa:~$",11)             = 11
5: rt_sigprocmask(SIG_SETMASK,8)  = 0
7: read(0,

到底是怎么回事,为什么我的打击被打破了?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读