Unix Timestamp Shel Script Template
Es ist zum Mäuse melken. Immer wieder das gleiche Problem. Ich schreibe mal wieder ein neues shell Script unter Linux und will die Log-Ausgaben in eine Datei schreiben. In der beta Phase kann viel passieren, als muss auch viel in das Logfile geschrieben werden. Kein Problem. Alles erst mal mit echo ausgeben und dann in eine Datei schreiben. Jetzt wird aber die Datei bei jedem Aufruf überschrieben und ich habe die Log Ausgaben des letzten oder vorletzten Aufrufes nicht mehr zur Hand. Mist.
Das ist mal wieder eines der Probleme, die ich schon X Mal gelöst habe und jedes mal suche ich bei Google nach dem korrekten Aufruf des date Kommandos zum erstellen eines Timestamps. Nun habe ich die Nase voll und baue mir selbst einen Reminder. Wenn ich das nächste mal bei Google nach “unix timestamp shel script” suche, steht hoffentlich dieser Blog Post auf Platz 1 und mein trübes Bewusstsein wird sich daran erinnern … oder auch nicht .
Dieses mal hat mein Ding mit den grauen Zellen jedenfalls reagiert und ich habe mal ein sehr einfaches Template geschrieben. Das Template ist ein einfaches shell Script, dass die Ausgaben in eine Datei schreibt. Die Ausgabedatei bekommt hier den Timestamp als Dateinamen und statt einem echo habe ich mal eine log Funktion ergänzt. Die log Funktion fügt jeder Zeile am Anfang noch das aktuelle Datum und die Uhrzeit an. Das ganzei sieht dann wie folgt aus:
#!/bin/sh log() { echo `date` $1 } LOGDIR=./logs TIME=`date +%s` { log Start # hier kommt die Logik rein log Ende } > $LOGDIR/$TIME.log
Eigentlich simpel, aber warum soll ich mir die Arbeit immer wieder machen. Einmal schreiben reicht und wenn ich das nächste mal ein Shell Script brauche, werde ich mich hoffentlich daran erinnern
Die Ausgabe des Scriptes landet nun in einer Datei, die man mit “vi logs/[timestamp].log” aufrufen kann. Die Datei hat nun folgenden Inhalt.
Tue Jan 31 15:47:16 CET 2012 Start Tue Jan 31 15:47:16 CET 2012 Ende
Das ist noch nicht viel, aber es ist ja auch nur ein einfaches Template. Wenn man das Linux Shell Script nun mit Leben füllt, hat man eine schöne Log Ausgabe und die Datei mit den Logs wird nicht nach jedem Aufruf gelöscht.
Weiterführende Themen:
Leave a Response