首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在dmesg命令的输出之后

在dmesg命令的输出之后
EN

Stack Overflow用户
提问于 2015-09-04 12:45:26
回答 3查看 4.4K关注 0票数 1

我找到了一个实时跟踪dmesg命令输出的解决方案。解决方案是here

代码语言:javascript
复制
watch -n 0.1 "dmesg | tail -n $((LINES-6))"

它起作用了。但是我想知道为什么$((-6行))能正确工作,而不是$LINES。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2020-01-17 19:49:54

dmesg已经具有此功能。您可以使用以下命令:

代码语言:javascript
复制
dmesg -w
票数 3
EN

Stack Overflow用户

发布于 2015-09-04 21:38:55

$LINE的值执行$(($LINE - 6))减法6并返回结果。

编辑:

当使用bash (可能还有其他shell)时

代码语言:javascript
复制
   LINES  Used by the select compound  command  to  determine  the  column
          length  for  printing selection lists.  Automatically set if the
          checkwinsize option is enabled or in an interactive  shell  upon
          receipt of a SIGWINCH.

简而言之,行是由您的xtermputty提供的,用于给出行和列号。

票数 1
EN

Stack Overflow用户

发布于 2016-01-08 17:25:09

我想知道为什么$((

-6))而不是$LINES能正确工作。

原因有两个部分。

  1. watch显示一个标题,后面跟着一个空行,因此您需要从可用的屏幕行数中减去2(或使用-t选项关闭标题)。
  2. dmesg输出的某些行长于屏幕宽度,因此占用多个屏幕行。由于tail -n没有考虑到这一点,而是计算逻辑行而不考虑它们的长度,所以它可以在屏幕上提供比请求更多的行,并且watch只显示第一个屏幕上的行,而不显示其余的行(在您的测试用例中为4行)。要纠正这一点,您可以在将dmesg行提供给tail -n之前将它们换行以适应屏幕宽度,例如:

观看"dmesg | fold -n$((LINES-2))" | tail -w$COLUMNS“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32390241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档