Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
woif •->
Anmeldedatum: 16.05.2006 Beiträge: 6
|
Verfasst am: 16.05.2006 - 11:36 Titel: Uptime Protokoll |
|
|
Hallo!
Ich versuche ein Skript zu schreiben, welches im Hintergrund läuft und die Uptime in einer Datei protokolliert.
Das ganze sollte folgendermassen funktionieren:
* ich schreibe beim Aufruf das aktuelle Datum in Zeile eins
* ich lasse eine Endlosschleife laufen und schreibe in Zeile 2 von null weg einen Zahlenwert der nach jedem delay 60 (also alle Minuten) um eins erhöht wird.
Das Problem ist nun: wenn das Datum gleich geblieben ist (zum Beispiel Login am Morgen und am Abend) soll in Zeile 2 fortgesetzt werden, für einen neuen Tag soll eine neue Zeile begonnen werden und das Datum wieder dabei stehen. wenn das Datum gleich ist, wie kann ich nach dem letzten Wert in dieser Datei gesucht werden?
Diese Datei soll ausserdem mit AS ausgewertet werden können (sprich wie lange war man an diesem Tag eingeloggt, wie lange in der letzten Woche/Monat).
Für Input und Hilfe wäre ich sehr dankbar!
woif |
|
Nach oben |
|
|
woif •->
Anmeldedatum: 16.05.2006 Beiträge: 6
|
Verfasst am: 16.05.2006 - 13:07 Titel: |
|
|
Mein Beispielskript dokumentiert jetzt, aber es wird der alte Eintrag nicht überschrieben sondern immer eine neue Zeile begonnen!?!
repeat
set datei to open for access file ":Users:XYZ:Desktop:count.txt" with write permission
set datum to (current date) as string
set laufzeit to do shell script "uptime | cut -c 12-15"
write datum to datei starting at eof
write " " to datei
write laufzeit to datei
write "
" to datei
delay 60
close access datei
end repeat
set eof datei
wie kann ich das vermeiden? weiss jemand rat? |
|
Nach oben |
|
|
iScript •---->
Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 16.05.2006 - 18:40 Titel: |
|
|
schreibe ein oder mehrere leicht wiederauffindbare zeichen mit in dein file.
dann kannst du vor dem schreiben den offset dieses zeichens/dieser zeichen ermitteln, und ab dort deine write-befehl start (offset of "diezeichenkette").
der writebefehl überschreibt standardmässig.
was soll denn genau überschrieben werden?
beispiel posten.
oder du ermittelst den offset der letzten zeile (wenn die letzte zeile überschrieben werden soll). _________________ - anholn deit kriegen - |
|
Nach oben |
|
|
iScript •---->
Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 16.05.2006 - 19:04 Titel: |
|
|
oder einfach:
write datum to datei with replacing*
(* komisch, dass "replacing" im scripteditor wie eine variable dargestellt wird? funktioniert aber) _________________ - anholn deit kriegen - |
|
Nach oben |
|
|
till •--->
Anmeldedatum: 21.04.2005 Beiträge: 187 Wohnort: q-town (R-P)
|
Verfasst am: 16.05.2006 - 19:26 Titel: |
|
|
das is ja echt erstaunlich!
das is bestimmt wegen dem
open for access
denk ich mal
weil replacing is gibts bei finder und zb Text edit aber nid im standard suit
aber mit -open for acess- gehts . _________________ ein berühmter Philosoph (<-Ich) sagte einmal:
" es ist nicht das Problem was uns Kopfzerbrechen macht,
es ist der Kopf selbst, der sich erdrückt" |
|
Nach oben |
|
|
woif •->
Anmeldedatum: 16.05.2006 Beiträge: 6
|
Verfasst am: 17.05.2006 - 09:54 Titel: |
|
|
Danke erstmal für eure ratschläge, replacing führt jedoch auch nicht zur gewünschten lösung. es geht dabei um folgendes:
* das skript wird bei systemstart geladen und läuft dann im hintegrund
* es wird das datum vermerkt, dann wird die uptime neben dem datum gespeichert
* da sich die uptime jede minute erhöht, soll der alte wert jeweils überschrieben werden
* starte ich den computer am nächsten tag so soll eine neue zeile angelegt werden mit dem dann aktuellen datum, daneben soll wieder die uptime geschrieben werden, wobei sich dann natürlich dieser wert kontinuierlich erhöhen soll
die log-datei sollte dann etwa so aussehen:
17. Mai 2006 2:34
18. Mai 2006 4:56
usw. |
|
Nach oben |
|
|
woif •->
Anmeldedatum: 16.05.2006 Beiträge: 6
|
Verfasst am: 22.05.2006 - 23:35 Titel: |
|
|
so - mein skript funktioniert (fast) wie gewünscht.
ein letztes problem ist jedoch noch übrig:
* das programm läuft in einer endlosen repeat-schleife mit delay 60
* will ich den computer runterfahren, so tut dieser das nicht, weil ja das AS-programm noch in der endlosschleife läuft.
wie kann ich das umgehen?
danke woif |
|
Nach oben |
|
|
|