Explicação da saída do comando superior (no sistema embarcado)

1

Alguém por favor pode me ajudar a entender a saída que recebo do comando principal? Este é o ponto em que o oom-killer é invocado e mata o meu aplicativo principal. O que exatamente está sob o VSZ e o% VSZ? O que é 502m304.5 ??

    
por Cooli 06.05.2016 / 20:13

2 respostas

0

Sua saída mostra que top está imprimindo algumas seqüências de escape que o terminal não reconhece. Os bits em que você vê um espaço em branco seguido por [ seguido por mais caracteres ilegíveis são sequências de escape que funcionam na maioria dos terminais; o primeiro caractere dessas seqüências é o caractere de escape, que seu terminal imprime como um espaço em branco. Por exemplo, ␛[7m no início da linha do título inicia o vídeo inverso, ␛[0m pára o vídeo inverso, etc.

Não sei exatamente o que está acontecendo com a coluna STAT e VSZ, mas parece que o top também imprimiu algumas sequências de mudança de cores (é de lá que o m está vindo), e elas foram parcialmente sobrescrito (provavelmente o topo está imprimindo um caractere que faz o cursor ir para a esquerda para que o próximo caractere substitua o que estava lá).

Com muitos programas, configurar a variável de ambiente TERM corretamente é suficiente: ela deve indicar um tipo de terminal que não suporta nenhuma sequência de escape. Certifique-se de que você não tenha um script que codifique um valor TERM em algum lugar. Tente TERM=dumb . Se você estiver usando o BusyBox, eu acho que seus códigos de top escapam de seqüências que funcionam na maioria dos terminais, então você está sem sorte. Você poderia executá-lo através de um filtro que remove seqüências de escape. Não testado, mas deve funcionar com o BusyBox.

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

(De este script Perl mais completo)

    
por 07.05.2016 / 21:35
0

De link :

vsz = "O tamanho do processo na memória (virtual) em unidades de 1024 bytes como um inteiro decimal."

    
por 07.05.2016 / 12:44