Ngrep 奇怪的行为

Ngrep 奇怪的行为

我有一个非常奇怪的问题。

我正在使用 Fedora(带有 KDE),我需要 ngrep 来检查通过特定端口传输的发送数据......

奇怪的是,当我的终端(更准确地说,Konsole,我也尝试过其他终端应用程序 - Yakuake、Guake、Terminator 等)在更大的显示屏(21" - 1920x1080)上全屏显示时,ngrep 输出看起来像这:

T 127.0.0.1:39167 -> 127.0.0.1:8983 [AP]                                                                                                                                                                                            
GET /solr/col                                                                                                                                                                                                                                                                   
lection1/sele                                                                                                                                                                                                                                                                   
ct?q=%28entit                                                                                                                                                                                                                                                                   
yType%3A61+AN                                                                                                                                                                                                                                                                   
D+owncCompany                                                                                                                                                                                                                                                                   
_b%3Atrue%29&                                                                                                                                                                                                                                                                   
fl=*%2C%5Bchi                                                                                                                                                                                                                                                                   
ldren%5D&star                                                                                                                                                                                                                                                                   
t=0&rows=10&s                                                                                                                                                                                                                                                                   
ort=entityId_                                                                                                                                                                                                                                                                   
s+asc%2Cid+as                                                                                                                                                                                                                                                                   
c&wt=javabin&                                                                                                                                                                                                                                                                   
version=2 HTT                                                                                                                                                                                                                                                                   
P/1.1..User-A
gent: Solr[or
g.apache.solr
.client.solrj
.impl.HttpSol
rClient] 1.0.
.Host: 127.0.
0.1:8983..Con
nection: Keep
-Alive....   

..以某种方式被包裹...我不太清楚。

但是,如果我将终端保留在笔记本电脑显示屏上(16“ - 1600x900),则输出会在整个终端上拉伸,这是预期的行为。

我搜索了(整个谷歌:))但我不知道问题出在哪里。我认为我的显示器配置可能有问题,但在家里我有 Kubuntu 和一个大显示器 (21" - 1920x1080),奇怪的行为是相同的。我唯一的解决方案是保持终端不打开全屏或将其保留在较小的显示器中我认为这是有关终端列设置的问题,我不知道如何解决这个问题。

预先感谢,安德烈

答案1

我想到了几种可能性:

  • 程序(无论出于何种原因)检测到屏幕处于大的并会出于开发人员的某些模糊目的而减少列的宽度
  • 该程序无法正确检测屏幕尺寸。正如建议的@tom-zych,如果程序没有正确响应窗口大小调整事件,则可能会发生这种情况。提供的解决方案如何解决终端屏幕混乱的问题? (通常在调整大小之后)对于除最终程序 ( ngrep) 以外的情况很有用,例如,该resize程序主要在以下情况下有用:终端不会更新其大小,如 所示stty -a

在第一种情况下,手册页ngrep(8)没什么帮助,因为它提到列宽的唯一地方是使用一个选项:

-c
忽略检测到的终端宽度并强制列宽为指定大小。

和(重复)

-c
显式将控制台宽度设置为。请注意,这是控制台宽度,而不是ngrep 作为有效负载打印出来的完整宽度;根据输出模式, ngrep 打印可能少于 每行字节数(缩进)。

但这确实意味着ngrep正在做一些格式选择。在这里寻找洞察力表明犯罪:

允许列宽大于 255。

更改用于表示列数的类型8位32位。如果您调整大小的屏幕(使用小字体)碰巧比 255 列宽,ngrep则会环绕,只比 255 多出的部分少 5 列。从给出的示例来看,您的终端宽度可能是 255+5 +15 = 270 个字符。

您可以使用 来检查stty -a

相关内容