top命令输出解释(嵌入式系统)

top命令输出解释(嵌入式系统)

有人可以帮助我理解从 top 命令得到的输出吗?这就是 oom-killer 被调用并杀死我的主应用程序的时刻。 VSZ 和 %VSZ 下到底是什么? 502m304.5是什么?在此输入图像描述

答案1

您的输出显示top正在打印一些终端无法识别的转义序列。您看到空白后跟[更多垃圾字符的位是在大多数终端上工作的转义序列;这些序列的第一个字符是转义字符,您的终端将其打印为空白。例如,␛[7m在标题行的开头开始反显、␛[0m停止反显等。

我不确定 STAT 和 VSZ 列究竟发生了什么,但似乎顶部也在那里打印了一些颜色变化序列(这就是来自的地方m),并且它们已被部分覆盖(顶部可能正在打印一个字符,它确实使光标向左移动,以便下一个字符覆盖那里的字符)。

对于许多程序,TERM正确设置环境变量就足够了:它应该指示不支持任何转义序列的终端类型。确保您没有对TERM某处的值进行硬编码的脚本。尝试TERM=dumb。如果您使用 BusyBox,我认为它的top硬编码转义序列适用于大多数终端,所以您运气不好。您可以通过删除转义序列的过滤器运行它。未经测试,但应该与 BusyBox 一起使用。

#!/bin/sh
script=$(printf 's/\033\\[[0-9;]*[A-Za-z]//g')
sed -e "$script" "$@"

(从更完整的 Perl 脚本)

答案2

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ps.html:

VSZ=“(虚拟)内存中进程的大小,以 1024 字节为单位,以十进制整数表示。”

相关内容