我找到了一个实时跟踪dmesg命令输出的解决方案。解决方案是here。
watch -n 0.1 "dmesg | tail -n $((LINES-6))"它起作用了。但是我想知道为什么$((-6行))能正确工作,而不是$LINES。
谢谢。
发布于 2020-01-17 19:49:54
dmesg已经具有此功能。您可以使用以下命令:
dmesg -w发布于 2015-09-04 21:38:55
对$LINE的值执行$(($LINE - 6))减法6并返回结果。
编辑:
当使用bash (可能还有其他shell)时
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.简而言之,行是由您的xterm或putty提供的,用于给出行和列号。
发布于 2016-01-08 17:25:09
我想知道为什么$((
-6))而不是$LINES能正确工作。
原因有两个部分。
watch显示一个标题,后面跟着一个空行,因此您需要从可用的屏幕行数中减去2(或使用-t选项关闭标题)。dmesg输出的某些行长于屏幕宽度,因此占用多个屏幕行。由于tail -n没有考虑到这一点,而是计算逻辑行而不考虑它们的长度,所以它可以在屏幕上提供比请求更多的行,并且watch只显示第一个屏幕上的行,而不显示其余的行(在您的测试用例中为4行)。要纠正这一点,您可以在将dmesg行提供给tail -n之前将它们换行以适应屏幕宽度,例如:观看"dmesg | fold -n$((LINES-2))" | tail -w$COLUMNS“
https://stackoverflow.com/questions/32390241
复制相似问题