Wie zeigt der Befehl "top" Live-Ergebnisse an?

9

Wie kann ich ein Shell-Skript schreiben, das die Ergebnisse in Echtzeit anzeigt?

So etwas wie der topBefehl, der die Ergebnisse nach festgelegten Zeitintervallen aktualisiert.

Alt-Text

Laser
quelle
6
wahrscheinlich mit einer cursesSchnittstelle ... aber ich denke, dies ist stärker eine Programmierfrage und gehört auf SO
Xenoterracide

Antworten:

7

Es wäre hilfreich, wenn Sie viel genauer wissen würden, was Sie versuchen zu tun.

Hier ist ein äußerst vereinfachtes Beispiel:

while true
do
    clear
    date
    sleep 1
done
Bis auf weiteres angehalten.
quelle
13

Mit dem Befehl watch (1) können Sie Ihr Skript in regelmäßigen Abständen ausführen:

watch -n 1 myscript.sh

Dies wird myscript.shalle 1 Sekunde ausgeführt und löscht den Bildschirm zwischen jedem Lauf und mit einem Zeitstempel in der Ecke. Sie können die -dOption verwenden und es werden sogar Unterschiede in der Ausgabe pro Lauf hervorgehoben.

Joshperry
quelle
Ich habe nur darüber nachgedacht, wie ich es mit der Uhr beantworten soll.
Kevin M
Ich habe keine watch. Könnten Sie genauer sein? Welches Betriebssystem?
Chris Page
2

Die meisten dieser Daten werden im Allgemeinen in den Grundelementen des virtuellen Dateisystems / proc verfügbar gemacht. Jeder Prozess hat einen Eintrag in / proc in einem Verzeichnis namens PID. / Proc / 5437 hätte also die Grundelemente für den 5437-Prozess. Wenn Sie die Grundelemente dort lesen und entsprechend analysieren, sind Sie dennoch nah an dem, was top tut.

Top funktioniert tatsächlich, indem bestimmte Funktionsaufrufe aufgerufen werden, die diese Informationen direkt aus dem Kernel extrahieren, anstatt sie aus Dateien abzurufen. Um dasselbe von bash aus zu tun, müssten Sie es entweder aus dem virtuellen Dateisystem / proc ziehen oder aus anderen Aufrufen wie zps .

In Echtzeit ist dies auf der Detailebene, die top bietet, nicht ganz machbar. Sie können die Zeit so fein schneiden, dass sie in Echtzeit zu sein scheint, aber Sie erhalten trotzdem Zeitscheiben.

sysadmin1138
quelle
2

Ähm, für den Fall, dass Sie die topAusgabe länger betrachten und nicht nur prüfen möchten , ob ein Programm einwandfrei funktioniert , empfehle ich die Verwendung von htop .

Es gibt Ihnen viele Echtzeitinformationen und ist einfacher zu steuern und zu verwalten.

Sie können das Layout der Ausgabe ändern, z. B. Balkendiagramme und Spalten.

Polemon
quelle
Ich glaube, er fragt, wie man eine App schreibt, die in regelmäßigen Abständen nicht über top oder htop spezifisch abfragt.
Chris
1

topverwendet Curses und liest das /procDateisystem

Rekursion
quelle
1
Außer auf Systemen, die keine haben /proc. Eine andere Möglichkeit, die Informationen abzurufen, ist sysctl (8) / sysctl (3).
Chris Page