Como o comando "top" mostra resultados ao vivo?


9

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

Algo como o topcomando que atualiza os resultados após alguns intervalos fixos de tempo.

texto alternativo


6
provavelmente usando uma cursesinterface de ... mas eu acho que isso é mais pesadamente uma questão de programação e pertence a SO
xenoterracide

Respostas:


7

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

Aqui está um exemplo extremamente simplista:

while true
do
    clear
    date
    sleep 1
done

13

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

watch -n 1 myscript.sh

Isso será executado a myscript.shcada 1 segundo, limpando a tela entre cada execução e com um carimbo de data / hora no canto. Você pode usar a -dopção e ela ainda destacará as diferenças na saída por execução.


Eu estava pensando em como responder usando o relógio.
Kevin M

Eu não tenho watch. Você poderia ser mais específico? Qual SO?
Chris Page

2

A maioria desses dados geralmente é exposta nas primitivas do sistema de arquivos virtual / proc. Cada processo possui uma entrada em / proc em um diretório chamado PID. Portanto, / proc / 5437 teria as primitivas para o processo 5437. Lendo as primitivas lá e analisando apropriadamente, você ainda se aproxima do que a parte superior faz.

O Top realmente 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 a partir do bash, você teria que retirá-lo do sistema de arquivos virtual / proc ou extraí-lo de outras chamadas, como para ps.

Quanto ao tempo real, isso não é factível no nível de detalhe que o topo fornece. Você pode cortar o tempo com precisão suficiente para que pareça ser em tempo real, mas continuará recebendo fatias de tempo.


2

Erm, caso você esteja analisando a topsaída por mais tempo, e não apenas para verificar se um programa está indo bem, sugiro usar o htop .

Ele fornece 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 barras e colunas.


Acredito que ele esteja perguntando como escrever um aplicativo que pesquise em intervalos regulares, não especificamente sobre top ou htop.
Chris

1

topusa maldições e lê o /procsistema de arquivos


11
Exceto em sistemas que não possuem /proc. Outra maneira de obter as informações é sysctl (8) / sysctl (3).
Chris Page
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.