Como o comando “top” mostra resultados ao vivo?

8

Como posso escrever um script de shell que mostre os resultados em tempo real?

Algo parecido com o comando top que atualiza os resultados após alguns intervalos de tempo fixos.

    
por Lazer 28.08.2010 / 19:19

5 respostas

7

Ajudaria se você fosse muito mais específico sobre o que está tentando fazer.

Aqui está um exemplo simplista extremamente :

while true
do
    clear
    date
    sleep 1
done
    
por 28.08.2010 / 20:54
13

você pode usar o comando watch (1) para executar seu script em intervalos regulares:

watch -n 1 myscript.sh

Isso executará myscript.sh a cada 1 segundo limpando a tela entre cada execução e com um timestamp no canto. Você pode usar a opção -d e até realçar as diferenças na saída por execução.

    
por 30.08.2010 / 04:50
2

A maioria desses dados geralmente é exposta nas primitivas do sistema de arquivos virtual / proc. Cada processo tem uma entrada em / proc em um diretório chamado PID. Então / proc / 5437 teria os primitivos para o processo 5437. Lendo os primitivos e analisando apropriadamente você ainda assim fechará o que o topo faz.

Top na verdade funciona chamando chamadas de função específicas que extraem essas informações diretamente do kernel, em vez de extraí-las dos arquivos. Para fazer o mesmo do bash, você teria que extraí-lo do sistema de arquivos virtual / proc ou extraí-lo de outras chamadas, como ps .

Quanto ao tempo real, isso não é possível no nível de detalhes que o top fornece. Você pode dividir o tempo bem o suficiente para que pareça ser em tempo real, mas você ainda estará obtendo fatias de tempo.

    
por 29.08.2010 / 05:53
2

Erm, caso você esteja olhando para top output por um longo tempo, e não apenas para verificar se um programa está indo bem, eu sugiro usar htop .

Ele oferece muitas informações em tempo real e é mais fácil de controlar e gerenciar.

Você pode alterar o layout da saída, como gráficos de barra e colunas.

    
por 29.08.2010 / 15:43
1

top usa Malditos e lê o sistema de arquivos /proc

    
por 29.08.2010 / 06:19