Comment la commande «top» affiche-t-elle les résultats en direct?

9

Comment puis-je écrire un script shell qui affiche les résultats en temps réel?

Quelque chose comme la topcommande qui met à jour les résultats après quelques intervalles de temps fixes.

texte alternatif

Lazer
la source
6
utilisant probablement une cursesinterface ... mais je pense que c'est plus une question de programmation et appartient à SO
xenoterracide

Réponses:

7

Il serait utile que vous soyez beaucoup plus précis sur ce que vous essayez de faire.

Voici un exemple extrêmement simpliste:

while true
do
    clear
    date
    sleep 1
done
En pause jusqu'à nouvel ordre.
la source
13

vous pouvez utiliser la commande watch (1) pour exécuter votre script à intervalles réguliers:

watch -n 1 myscript.sh

Cela s'exécutera myscript.shtoutes les 1 secondes en effaçant l'écran entre chaque exécution et avec un horodatage dans le coin. Vous pouvez utiliser l' -doption et elle mettra même en évidence les différences de sortie par cycle.

joshperry
la source
Je pensais juste à comment y répondre en utilisant la montre.
Kevin M
Je n'en ai pas watch. Pourriez-vous être plus précis? Quel OS?
Chris Page
2

La plupart de ces données sont généralement exposées dans les primitives du système de fichiers virtuel / proc. Chaque processus a une entrée dans / proc dans un répertoire appelé PID. Donc / proc / 5437 aurait les primitives pour le processus 5437. En lisant les primitives et en analysant correctement, vous vous rapprochez de ce que fait le haut.

Top fonctionne en fait en appelant des appels de fonctions spécifiques qui extraient ces informations directement du noyau au lieu de les extraire des fichiers. Pour faire la même chose depuis bash, vous devez soit l'extraire du système de fichiers virtuel / proc, soit l'extraire d'autres appels tels que to ps.

Quant au temps réel, ce n'est pas tout à fait faisable au niveau des détails fournis par top. Vous pouvez découper le temps suffisamment fin pour qu'il semble être en temps réel, mais vous obtiendrez toujours des tranches de temps.

sysadmin1138
la source
2

Euh, au cas où vous regardez la topsortie pendant plus longtemps, et pas seulement pour vérifier si un programme fonctionne bien, je suggère d'utiliser htop .

Il vous donne beaucoup d'informations en temps réel et est plus facile à contrôler et à gérer.

Vous pouvez modifier la disposition de la sortie, comme les graphiques à barres et les colonnes.

polémon
la source
Je crois qu'il demande comment écrire une application qui interroge à intervalles réguliers et non sur top ou htop en particulier.
Chris
1

toputilise Curses et lit le /procsystème de fichiers

Récursivité
la source
1
Sauf sur les systèmes qui n'en ont pas /proc. Une autre façon d'obtenir les informations est sysctl (8) / sysctl (3).
Chris Page