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

lazer
fonte
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
Pausado até novo aviso.
fonte
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.

joshperry
fonte
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.

sysadmin1138
fonte
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.

polemon
fonte
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

Recursão
fonte
11
Exceto em sistemas que não possuem /proc. Outra maneira de obter as informações é sysctl (8) / sysctl (3).
Chris Page