section | x-masysma-name | title | date | lang | author | keywords | x-masysma-version | x-masysma-repository | x-masysma-website | x-masysma-owned | x-masysma-copyright | |||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 |
screenindex |
Screen Index |
2020/03/20 21:07:42 |
de-DE |
|
|
1.0.0 |
1 |
Copyright (c) 2020 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
|
Screen Index ermöglicht es aufzuzeichnen, wie lange der Computer läuft. Dazu wird das Programm in den Autostart-Mechanismus des Betriebssystemes aufgenommen und beim Systemstart oder beim Einloggen gestartet. Die Aufzeichnung endet, sobald das Programm beendet wird, bspw. ausgelöst durch ein Herunterfahren des Rechners.
Die Aufzeichnung kann über die Kommandozeile oder durch direktes Auswerten der XML-Aktivitätendatei erfolgen. Das Programm sieht auch einen XHTML+SVG-Export vor, der die Aktivität eines Jahres in einer interaktiven Übersicht exportiert.
Zusätzlich zur Zeitaufzeichnung können für den aktuell laufenden Zeitraum Notizen hinterlegt werden, die man bspw. nutzen kann, um herauszufinden, wie viel Zeit bestimmte Aktivitäten einnehmen.
Zum Test kann man die JAR-Datei direkt aufrufen. In diesem Falle wird im aktuellen Verzeichnis eine Konfigurationsdatei und Datenbank erstellt.
Hier ist eine Beispielsitzung:
$ java -jar screenindex.jar -l
Screen Index 1.0.4.5, Copyright (c) 2009, 2010, 2011, 2012, 2015 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
Unable to read configuration data: configuration.ini (No such file or directory)
java.io.FileNotFoundException: configuration.ini (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileReader.<init>(FileReader.java:72)
at ma.screenindex.Configuration.readConfiguration(Configuration.java:50)
at ma.screenindex.Main.main(Main.java:138)
This can happen at the first startup.
Screenindex logging in progress -- waiting for shutdown...
Da das Programm zum ersten Mal gestartet wurde, findet es keine
Konfigurationseinstellungen und erzeugt diese in der Datei configuration.ini
.
Anschließend wird die Aufzeichnung gestartet, bis man das Programm beendet,
bspw. über den Task Manager oder [CTRL]-[C].
Im Folgenden steht die Ausgabe, wenn man das Programm per [CTRL]-[C] beendet:
^Cdone.
Es wird also die Meldung “done“ (fertig) ausgegeben, um zu signalisieren, dass die Aktivitätsdaten gespeichert wurden. Anschließend kann die Aktivität des aktuellen Jahres, Monats und Tages per Kommandozeile abgefragt werden:
$ java -jar screenindex.jar -v y current
Screen Index 1.0.4.5, Copyright (c) 2009, 2010, 2011, 2012, 2015 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
3.2020: 0 h, 8 min, 33 sec (513 sec)
Total: 0 h, 8 min, 33 sec (513 sec)
Averange: 0 h, 8 min, 33 sec (513 sec)
$ java -jar screenindex.jar -v m 03.2020
Screen Index 1.0.4.5, Copyright (c) 2009, 2010, 2011, 2012, 2015 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
20.03.2020: 0 h, 8 min, 33 sec (513 sec)
Total: 0 h, 8 min, 33 sec (513 sec)
Averange: 0 h, 8 min, 33 sec (513 sec)
$ java -jar screenindex.jar -v d 20.03.2020
Screen Index 1.0.4.5, Copyright (c) 2009, 2010, 2011, 2012, 2015 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
Activity from 21:14:27 to 21:23:00: 0 h, 8 min, 33 sec (513 sec)
Total: 0 h, 8 min, 33 sec (513 sec)
Averange: 0 h, 8 min, 33 sec (513 sec)
Da lediglich Daten für einen Tag vorliegen, sind die Inhalte für alle drei Varianten gleich. Auf Tagesebene werden einzelne Activities unterschieden. Wenn man das Programm erneut startet und beendet, so erhält man in der Tagesansicht eine nach Aktivitäten aufgeschlüsselte Ansicht:
Screen Index 1.0.4.5, Copyright (c) 2009, 2010, 2011, 2012, 2015 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
Activity from 21:14:27 to 21:23:00: 0 h, 8 min, 33 sec (513 sec)
Activity from 21:25:54 to 21:26:35: 0 h, 0 min, 41 sec (41 sec)
Total: 0 h, 9 min, 13 sec (554 sec)
Averange: 0 h, 4 min, 36 sec (277 sec)
Zur Installation von Screen Index muss das screenindex.jar
kompiliert und in
einem Ordner bereitgestellt werden. Die Kompilation erfolgt mit ant jar
, die
Installation durch Kopieren des JAR-files in einen Ordner nach Wahl.
Auf Debian-basierten Linuxsystemen kann mit ant package
ein Paket erzeugt
werden, welches ein Skript screenindex
mitliefert, um Screen Index aufzurufen.
Mit diesem Skript wird automatisch das Verzeichnis $HOME/.mdvl/screenindex
als
Ablageort für Konfiguration und Datenbank festgelegt.
Installiert man Screen Index selbst, so ist es sinnvoll, ein entsprechendes
Skript ebenfalls zu erstellen, damit die im Hintergrund laufende Version die
selbe Datenbank verwendet, wie eventuell im Vordergrund erfolgende Anfragen.
Im Einfachsten Falle enthält das Skript nur ein cd
in ein geeignetes
Verzeichnis gefolgt vom Screen Index Start.
Zusätzlich ist es für die Installation sinnvoll, Screen Index in den
Autostartmechanismus des Betriebssystemes zu integrieren. Unter Windows legt
man eine Verknüpfung im Ordner shell:startup
an, unter Linux kann man
unter Debian bspw. einen Eintrag in der .xsession
-Datei oder dem
Autostartmechanismus des Fenstersystemes vornehmen. Je nach Nutzungsweise ist
für den automatisch gestarteten Aufruf ein screenindex -l -g
oder
screenindex -l -y
sinnvoll.
Je nach dem, welche Zeit man erfassen will, gibt es weiterhin Sinn, Screen Index
beim Sperren des Bildschirmes zu beenden, um diese Zeit von der Erfassung
auszuklammern. Unter Linux kann man bspw. das Kommando zum Aufrufen des
Bildschirmschoners um einen Eintrag für screenindex_term
erweitern -- ein
Skript, welches im Repository mitgeliefert wird. Wie eine solche Integration
aussehen kann, zeigt das ebenfalls mitgelieferte Skript q
am Beispiel des
XScreenSaver.
Bei der Aufzeichnung werden Activities nur dann beendet, wenn Screen Index beendet wird. Dadurch wird eine vor 00:00 des nächsten Tages begonnene Aktivität auch in den neuen Tag fortgesetzt. Beispiel:
$ screenindex -v d 20.02.2018
Screen Index 1.0.4.5, Copyright (c) 2009, 2010, 2011, 2012, 2015 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
Activity from 21:40:31 to 22:03:38: 0 h, 23 min, 7 sec (1387 sec)
Activity from 22:25:24 to 22:58:18: 0 h, 32 min, 53 sec (1974 sec)
Activity from 23:01:09 to 23:25:18: 0 h, 24 min, 8 sec (1449 sec)
Activity from 23:27:43 to 00:43:10: 1 h, 15 min, 27 sec (4527 sec)
Total: 2 h, 35 min, 37 sec (9337 sec)
Averange: 0 h, 38 min, 53 sec (2334 sec)
In diesem Beispiel wurde die vierte Activity um 23:27 angefangen und endete um 00:43 des nächsten Tages. Nachfolgende Aufzeichnungen, die nach 00:00 angefangen werden, werden dann dem nächsten Tag zugerechnet:
$ screenindex -v d 21.02.2018
Screen Index 1.0.4.5, Copyright (c) 2009, 2010, 2011, 2012, 2015 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
Activity from 01:10:39 to 01:40:20: 0 h, 29 min, 41 sec (1781 sec)
Activity from 18:29:52 to 19:10:32: 0 h, 40 min, 39 sec (2440 sec)
Activity from 19:17:52 to 19:41:57: 0 h, 24 min, 4 sec (1445 sec)
Activity from 20:16:01 to 22:05:26: 1 h, 49 min, 25 sec (6565 sec)
Activity from 22:38:34 to 23:52:35: 1 h, 14 min, 0 sec (4441 sec)
Total: 4 h, 36 min, 52 sec (16672 sec)
Averange: 0 h, 55 min, 34 sec (3334 sec)
Diese spezielle Aufzeichnungsweise liegt aktuell in der Implementierung begründet und könnte sich in einer neueren Screen Index Version ändern. Insgesamt trifft sie aber die Idee nicht schlecht, dass eine angefangene Aktivität wohl nicht allein durch Springen der Uhr von 23:59 auf 00:00 beendet werden sollte. Aus menschlicher Sicht ist vielleicht die Zuordnung zu einem neuen Tag ab dem Moment interessant, wo man inzwischen geschlafen hat. Dieses kann (und soll) das Programm aber nicht erkennen...
Den laufenden Aktivitäten können durch folgenden Aufruf Nachrichten zugeordnet werden:
$ screenindex -p NACHRICHT
Damit wird der laufenden Aktivität die Nachricht NACHRICHT
zugeordnet. Sie
wird zunächst in der Datei screenindex-locked.txt
hinterlegt und beim Beenden
der Aktivität in die Datenbank übertragen. Anschließend kann man mit der
Ansicht des aktuellen Tages, die zugeordnete Nachricht betrachten, Beispiel:
$ java -jar screenindex.jar -p Testnachricht
[... weitere Aktionen inkl. Beenden der Aktivität ...]
$ java -jar screenindex.jar -v d current
Screen Index 1.0.4.5, Copyright (c) 2009, 2010, 2011, 2012, 2015 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
Activity from 14:34:08 to 14:34:30: 0 h, 0 min, 22 sec (22 sec)
Message: Testnachricht
Total: 0 h, 0 min, 22 sec (22 sec)
Averange: 0 h, 0 min, 22 sec (22 sec)
In der Monatsansicht können Nachrichten ebenfalls betrachtet werden, indem man
zusätzlich den Parameter -i
verwendet:
$ java -jar screenindex.jar -v m current -i
Screen Index 1.0.4.5, Copyright (c) 2009, 2010, 2011, 2012, 2015 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
20.03.2020: 0 h, 9 min, 13 sec (554 sec)
21.03.2020: 0 h, 0 min, 22 sec (22 sec)
Testnachricht
Total: 0 h, 9 min, 35 sec (576 sec)
Averange: 0 h, 4 min, 47 sec (288 sec)
Messages: 1
Benutzt man stattdessen -m
, werden die Nachrichten ohne die Angabe der
Tage angezeigt, sodass man eine übersichtlichere Darstellung der Nachrichten
erhält.
Da Screen Index die Aktivität nur speichern kann, wenn es ordnungsgemäß, das
heißt unter Linux bspw. mit einem INT oder TERM-Signal, beendet wird, gibt es
spezielle Vorkehrungen für den Fall, dass ein solches sauberes Beenden nicht
möglich war. Das Standardverhalten von -l
nach einem „unsauberen“ Beenden
bspw. unter Linux durch KILL ist es, die weitere Aufzeichnung zu verweigern:
$ java -jar screenindex.jar -l
Screen Index 1.0.4.5, Copyright (c) 2009, 2010, 2011, 2012, 2015 Ma_Sys.ma.
For further info send an e-mail to Ma_Sys.ma@web.de.
There is a file called "/data/main/mdvl/rr/x-artifacts-unmanaged/xond/screenindex/tmp/test/screenindex-locked.txt".
That file indicates that Screenindex is already running.
If this is not true, you can just call screenindex with
the "-l -d" option to delete the file. Then just try to
start logging again.
Grund für die Sinnhaftigkeit dieses Standardverhaltens ist es, dass mehrere parallel laufende Screen Index Instanzen noch problematischer als das Verweigern der Aufzeichnung wären: Aktivitäten könnten doppelt oder fehlerhaft gespeichert werden, sodass der parallele Betrieb mit der selben Datenbank unbedingt zu vermeiden ist.
Eine entsprechende Meldung auf der Konsole weist den Benutzer darauf hin. Wenn
man sich sicher ist, dass kein Fehler vorliegt, so kann man durch einmaligen
Aufruf mit -l -d
die entsprechende screenindex-locked.txt
löschen. Eine
vormalige Aktivität geht dabei verloren. Eine Alternative ist -l -y
, bei dem
die Daten aus der screenindex-locked.txt
als (unvollständige) Aktivität
eingetragen werden, sofern möglich. Diese Variante kann man auch standardmäßig
verwenden, wenn man weiß, dass parallel laufende Screen Index Instanzen
ausgeschlossen sind und sich das lokale Betriebssystem nicht so einstellen
lässt, dass Screen Index beim Herunterfahren oder Ausloggen sauber beendet wird.
Die dritte Möglichkeit ist -l -g
, die den Benutzer mit einem graphischen
Dialog fragt; hier ein Screenshot:
In diesem Dialog kann der Benutzer interaktiv [OK] wählen, um den selben
Effekt zu erzielen wie ein einmaliges screenindex -l -y
oder [CANCEL], um
den Startvorgang von Screen Index abzubrechen. Bei Verwendung von Screenindex
in graphischen Umgebungen ist der Start mit -l -g
eigentlich immer zu
empfehlen, wenn unsauberes Beenden eine Ausnahmesituation darstellt.
Wenn man screenindex -l
im Hintergrund laufen lässt und parallel die
Datenbankinhalte mit den screenindex -v
-Optionen abfragt, so fällt auf, dass
die aktuelle Aktivität noch nicht in den Daten auftaucht. Dies ist der Logik
geschuldet, nach der Screen Index die Daten ausliest: Es wird nur die
Jahresaufzeichnung, nicht jedoch die aktuelle screenindex-locked.txt
betrachtet.
Ausnahmen von dieser Regel sind die Optionen -t
und -r
, die jeweils auch die
Zeit aus der screenindex-locked.txt
einbeziehen. Beide Optionen sind dafür
gedacht sind, eine Art tägliche Nutzungszeit bspw. in einer Statusleiste
anzuzeigen. In diesem Falle ist eine möglichst realitätsgetreue Darstellung
erforderlich; die Auswertung der Aktivitätsdaten mit den anderen -v
-Optionen
wird erwartungsgemäß hingegen eher länger zurückliegende Aktivitäten betreffen
und daher oft den noch laufenden Tag ausklammern.
Diese Datei enthält generelle Programmeinstellungen. Die Standardwerte sind folgendes:
[configuration]
; Screen Index configuration, created by version 1.0.4.5
locked-file=screenindex-locked.txt
io-date-format=dd.MM.yyyy HH:mm:ss
delta-t-max-per-day=21600
backup-interval-secs=600
database-dir=db
Relevante Einstellungsmöglichkeiten werden im Folgenden erklärt.
locked-file
: Gibt einen Dateinamen für eine screenindex-locked.txt
an, die genutzt
wird, um zu verhindern, dass zwei Instanzen gleichzeitig auf der selben
Datenbank gestartet werden. Damit richten wiederholt aufgerufene Autostarts
keinen Schaden an.
delta-t-max-per-day
: Gibt eine Anzahl in Sekunden an, ab der ein Tag als „voll“ gilt. Der
Standardwert sind 6 Stunden. Diese Einstellung wirkt sich nur in Verbindung
mit der Option -r
aus.
backup-interval-secs
: Gibt ein Sekundenintervall an, in dem die screenindex-locked.txt
aktualisiert wird. Darin wird dann die aktuelle Zeit festgehalten, um
im Falle von unerwartetem Programm-Benden zumindest einen Teil der
tatsächlichen Zeit zu erfassen.
database-dir
: Gibt einen Verzeichnisnamen zur Ablage der „Datenbankdateien“ an.
Die Datei screenindex-locked.txt
hat folgenden strukturellen Aufbau:
VON to BIS
NACHRICHT1
NACHRICHT2
...
VON
und BIS
in der 1. Zeile sind dabei sekundengenaue Datums und
Uhrzeitangaben, die Nachrichten folgen dannach in jeweils einer Zeile pro
Nachricht. Läuft die aktuelle Aktivität kürzer als die konfigurierten
backup-interval-secs
, steht unknown
als Wert für BIS
. Ein Beispiel für
diesen Zustand:
21.03.2020 14:34:40 to unknown
Hier ist gleichzeitig der Fall zu sehen, in dem keine Nachrichten hinterlegt wurden -- die Datei hat also nur eine Zeile.
Screen Index verwendet ein XML-Format zum Speichern der Aktivitäten. Dabei wird für jedes angefangene Jahr eine neue Datei angelegt. Es existiert keine DTD und kein Schema für das Format, von daher wird es hier anhand eines Beispiels erläutert:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--Screenindex year data file, written by Screenindex Version 1.0.4.5-->
<stats created-by-version="1.0.4.5" year="2020">
<month no="3">
<day no="20">
<activity end="20.03.2020 21:23:00" start="20.03.2020 21:14:27"/>
<activity end="20.03.2020 21:26:35" start="20.03.2020 21:25:54"/>
</day>
<day no="21">
<activity end="21.03.2020 14:34:30" start="21.03.2020 14:34:08">
<message>Testnachricht</message>
</activity>
</day>
</month>
</stats>
Der Aufbau der Datei sollte weitgehend selbsterklärend sein. Für die Jahresdatei
gibt es ein stats
-Element, welches das Jahr der Betrachtung explizit im
Attribut year
angibt (es lässt sich alternativ aus dem Dateinamen ermitteln).
Innerhalb des Dokuments befindet sich ein month
-Element für jeden Monat. In
jedem Momantselement befindet sich dann ein day
-Element für jeden Tag, wobei
im Attribut no
jeweils der Tag im Monat bzw. die Monatsnummer angegeben
werden.
Innerhalb der day
-Elemente befinden sich dann ein oder Mehr activity
Elemente, die in den Attributen start
und end
die Zeit der Aktivität
angeben. Wenn keine Nachrichten hinterlegt sind, sind die activity
-Elemente
leer, ansonsten erhalten sie für jede Nachricht ein message
-Element, in dem
der Nachrichtentext als PCDATA gespeichert ist.
Wenn man die Jahresdatei auf dem Dateisystem direkt öffnet, sind die Inhalte oft fortlaufend komplett auf einer Zeile untergebracht. Eine schnelle, automatische Formatierung kann durch Webbrowser oder die auf StackOvervlow angegebenen Tools erreicht werden.
Die Auswertemöglichkeiten über die -v
-Optionen wurden bereits in den
vorangegangenen Abschnitten beleuchtet. Dieser Abschnitt beschreibt Alternative
Möglichkeiten.
Obwohl als „veraltet“ gekennzeichnet, funktioniert die vor langer Zeit
vorgesehene Exportfunktion nach XHTML auch noch 2020. Sie kann über den Aufruf
von screenindex -s JAHR DATEI.xhtml
genutzt werden und produziert eine
einzige XHTML-Datei, die die Aktivitäten per Maus „erkundbar“ macht. Für die
vorher gezeigte Test-Datenbank sieht die Seite folgendermaßen aus:
Darin kann man ausgehend von der linken Seite durch Klick auf die Tabellenzeilen
die Aktivitäten interaktiv aufrufen; die Darstellung ist ansonsten vergleichbar
mit der von screenindex -v
. Als Besonderheit werden Diagramme für die Monate
generiert, die die monatliche bzw. tägliche Aktivität zeigen. Bei wenigen
und nur kurzen Aktivitäten wie dem hier gezeigten Beispiel sind diese jedoch
weitgehend leer.
Die Auswahl eines bestimmten Tages ist über das Formularfeld in der oberen rechten Ecke möglich.
Als Alternative zu den integrierten Export und Analysemöglichkeiten bietet
das Screen Index XML-Format natürlich auch die Möglichkeit einer direkten
Auswertung. Zwei Beispiele hierfür finden sich im Repository unter auswertung
:
messages.css
: Mit Hilfe eines einfachen CSS-Stylesheets können die Nachrichten aus dem
XML-Format extrahiert und sichtbargemacht werden werden. Mit diesem
Stylesheet werden die Aktivitäten zusammengehörender Monate durch Linien
und die Aktivitäten eines Tages durch einen grauen Strich gekennzeichnet.
messages-tex.xsl
: Zum Exportieren der Nachrichten in ein LaTeX-Dokument kann dieses Stylsheet
genutzt werden. Die Dokumentstruktur muss noch ergänzt und das Paket
mdwlist
importiert werden. Unter Linux kann ein XSLT-Stylesheet bspw.
mit dem Programm xsltproc
angewendet werden.
Es gibt zahllose Programme zum Erfassen der Nutzungszeit von Rechnern. Dieser Abschnitt verlinkt einige für ähnliche Zwecke wie Screen Index geeignete Programme, die teilweise stark abweichende Designs haben.
Weitere Ideen finden sich in der Liste auf Stackoverflow
ohne Anspruch auf Vollständigkeit und ohne besondere Reihenfolge
- Weniger Arbeitsspeicherverbrauch und Hintergrundaktivitäten durch Wahl einer systemnahen Programmiersprache ohne GC
- Datenablage in geeigneterem Format, nicht die ganze Datenbank dauerhaft in den Arbeitsspeicher laden
- Vollständige Unterstützung für Zeitzonen und andere Datumsformate
- Datensparsame automatische Erfassung genutzer Anwendungen mit Hilfe von Kategorie-Regelwerken
- Möglichkeit zur expliziten Projekt-Zeiterfassung -- Nachrichten mit dem Datum+Uhrzeit des Hinzufügens versehen.
- Informativere Auswertungsmöglichkeiten, eventuell auch mehr Statistik?
- Integration mit Erfassung der Nutzung von Rechenleistung zur Vorhersage zukünftigen Hardwarebedarfes? Wichtig hierbei ist, dass der genutzte Speicherplatz für diese Daten möglichst klein ausfallen sollte, bspw. nur Minimum,Median,Maximum oder eventuell noch ein 0.25 und 0.75 Quantil?