Respostas:
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
você pode usar o comando watch (1) para executar seu script em intervalos regulares:
watch -n 1 myscript.sh
Isso será executado a myscript.sh
cada 1 segundo, limpando a tela entre cada execução e com um carimbo de data / hora no canto. Você pode usar a -d
opção e ela ainda destacará as diferenças na saída por execução.
watch
. Você poderia ser mais específico? Qual SO?
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.
Erm, caso você esteja analisando a top
saí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.
top
usa maldições e lê o /proc
sistema de arquivos
/proc
. Outra maneira de obter as informações é sysctl (8) / sysctl (3).
curses
interface de ... mas eu acho que isso é mais pesadamente uma questão de programação e pertence a SO