Linux

頂級命令輸出說明(嵌入式系統中)

  • May 7, 2016

有人可以幫我理解我從 top 命令獲得的輸出嗎?這就是 oom-killer 被呼叫並殺死我的主應用程序的關鍵。VSZ 和 %VSZ 到底是什麼?什麼是502m304.5??在此處輸入圖像描述

您的輸出顯示top正在列印一些終端無法辨識的轉義序列。您看到一個空白後跟[更多垃圾字元的位是在大多數終端上工作的轉義序列;這些序列的第一個字元是轉義字元,您的終端將其列印為空白。例如,␛[7m在標題行的開頭開始反轉影片,␛[0m停止反轉影片等。

我不確定 STAT 和 VSZ 列到底發生了什麼,但似乎 top 也在那裡列印了一些變色序列(這就是它的m來源),並且它們已被部分覆蓋(top 可能正在列印一個確實使游標向左移動的字元,以便下一個字元覆蓋那裡的內容)。

對於許多程序,TERM正確設置環境變數就足夠了:它應該指示不支持任何轉義序列的終端類型。確保您沒有對TERM某處的值進行硬編碼的腳本。試試TERM=dumb。如果您使用的是 BusyBox,我認為它的top硬編碼轉義序列適用於大多數終端,所以您不走運。您可以通過刪除轉義序列的過濾器執行它。未經測試,但應與 BusyBox 一起使用。

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

(來自這個更完整的 Perl 腳本)

引用自:https://unix.stackexchange.com/questions/281581