3.04.2008

GeekTool

Was ist GeekTool?

GeekTool ist ein kleines Tool für Mac OS, welches es ermöglicht bestimmte Inhalte direkt in den Desktop zu schreiben - in den Hintergrund.

Ich hab das PrefPane (so ist die eigentliche Bezeichnung) installiert und finde es recht interessant. Man kann damit jede beliebige Ausgabe der Shell von Mac OS ausgeben lassen. Bilder (aus dem Internet) direkt einbetten oder einfach Textdateien ausgeben lassen: z.B. Notizen.

top

top ist ein Programm unter UNIX. Es erstellt - ähnlich wie die Standardansicht des Taskmanager unter Windows - eine ßbersicht aller laufende Prozesse, deren Verbrauch an Arbeitsspeicher und deren Belastung des Prozessors und noch sehr viel mehr Informationen.

Mit top gibt es in GeekTool aber ein Problem: die Ausgabe von top aktualisiert sicht selbstständig, so dass GeekTool (welches eigenständig aktualisiert) recht komische Ergebnisse gibt. Im Normalfall gibt es gar nichts aus, weil die Ausgabe von top quasi immer leer ist. Die FAQ von GeekTool erklärt zumindest, wie man eine Ausgabe aus top bekommt. Das Problem bei der gegebenen Lösung ist aber, dass es eine fehlerhafte Ausgabe ist. top arbeitet mit ’samples’ (Schnappschuss des aktuellen Zustands) und berechnet im nächsten sample die Differenz zum vorherigen, um so z.B. die aktuelle Auslastung der CPU durch ein Programm zu errechnen und auch darzustellen.

Da mich persönlich aber genau dieser Wert, die Auslastung der CPU, aber mehr interessiert, als die Benutzung des virtuellen Speichers, ist es mir recht wichtig gewesen, diesen Wert auch anzeigen zu können. Es gibt natürlich eine Lösung! Ich habe es mit diesem Befehl gelöst: top -n43 -l2 -o-CPU > top.txt && tail -n52 top.txt

Hier eine kleine Erklärung, was der Befehl denn tut.

top -n43 -l2 -o-CPU
Das eigentliche top. Es gibt 43 (-n43) Prozesse aus, erzeugt zwei Samples (-l2), damit das letzte eben auch die CPU Auslastung anzeigt und ordnet die Prozessliste nach CPU-Auslastung (-o-CPU) in absteigender Reihenfolge (-CPU) anstatt aufsteigender Reihenfolge (+CPU).
> top.txt
Die Ausgabe, nämlich die zwei Samples, wird in eine Textdatei geschrieben. Die Textdatei wird dabei immer wieder neugeschrieben, sie ist also immer leer vor dem Schreiben! Somit wächst die Datei nicht ins Unendliche :)
&& tail -n52 top.txt
Nachdem die Datei geschrieben wurde (&& führt den nächsten Befehl aus), wird der Inhalt des zweiten Samples per tail geholt. Tail ist englisch und bedeutet Schwanz. Das Programm tail gibt eine Eingabe von hinten angefangen aus. Es werden (tail -n52) die letzten 52 Zeilen der Textdatei ausgelesen. 52 entstehen dadurch: die Prozessliste ist 43 Zeilen lang + die Statistikzeilen von top, welche genau neun an der Zahl sind. Diese 52 Zeilen werden nun ausgegeben und an GeekTool weitergegeben.

GeekTool führt diesen Befehl nun alle 5 Sekunden aus, was vollkommen ausreicht, und aktualisiert so immer meinen Hintergrund :) Zu meinem Hintergrund Ich kann GeekTool nur empfehlen. Es ist jede Menge damit machbar und es sieht auch verdammt gut aus :)

FAQ Unterstützung

Da ich vermutlich nicht der einzige bin, der nach einer solchen Lösung sucht, habe ich auch direkt an das Team von GeekTool mein Wissen weitergegeben, mit der Bitte, es in die FAQ aufzunehmen.

Hi there,

I got a pretty nice workaround for top use within geektool

I use this command line in geektool:

top -n43 -l2 -o-CPU > top.txt && tail -n52 top.txt

What does it make?
It uses top printing 43 processes sorted by CPU usage descending and takes 2 samples.
Afterwards it prints the results of top in top.txt overwriting this file each time, so nearly no overhead is generated.
Now I want to have the last sample printed with GeekTool, therefor I use tail with the created file.
To see the statistics of top (count of running processes …) you need to display exactly 9 lines more as the process list (amount of processes listed by top).

Why 2 samples?
Using only one sample as in your current FAQ displays no CPU Usage, because this is calculated as a delta value between certain samples.

The requirement is pretty easy:
the -n option of tail needs to be 9 more than the -n option of top (9 line of the print above process list)
A little bit of hard disk for the textfile :P

I hope you can integrate this information in your current FAQ!
I attached two screenshots as well!

Would be nice linking me: http://toni.uebernickel.info

Best Regards,
Toni UebernickelE-Mail von Toni Uebernickel an Tynsoe projects

Kommentare

Kleines Update: Es geht auch ohne die Textdatei :)
top -n43 -l2 -o-CPU | tail -n52

Hier das Ganze nun auch auf der FAQ von GeekTool:
http://projects.tynsoe.org/en/geektool/faq.php

Hinterlasse einen Kommentar

Dein Kommentar:

Kategorien