Bashscript soll in Logfile schreiben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Altmeister
Beiträge: 2
Registriert: 15.10.2009 18:42:56

Bashscript soll in Logfile schreiben

Beitrag von Altmeister » 15.10.2009 19:06:44

Hallo zusammen,

ich möchte die Ausgabe von ein paar Konsolenbefehlen in einer Art Logfile sammeln. Nun stellt Debian ja bereits diverse Funktionen zum Loggen bereit, wie z.B. das automatische Löschen von veralteten Logs, bzw. Größenbegrenzungen.

Wie gestalte ich nun mein Script, bzw. den Cronjob, dass mein "Logfile" (nennen wir es mal Mein_Log.log) von Debian automatisch so behandelt wirt, das nur die letzten 24 Stunden vorgehalten werden und alles ältere automatisch verworfen wird?

Habe schon eine Menge über "rsyslogd" (nutze Lenny) gelesen, aber ob das jetzt das richtige ist und wie ich es damit überhaupt hinbekommen soll ist mir nicht klar.

Gruß
Altmeister

michaels
Beiträge: 1164
Registriert: 29.03.2009 18:12:25

Re: Bashscript soll in Logfile schreiben

Beitrag von michaels » 15.10.2009 19:35:14

Hallo und willkommen,

geht es dir jetzt um das Archivieren/löschen von Logs, oder das schreiben?

Schreiben:
Kannst du einfach Umleiten. Beispiel:

Code: Alles auswählen

/bin/meinbefehel >> /var/log/meinbefehel.log
Damit wird die Ausgabe von dem Programm "meinbefehel" in die Log Datei "/var/log/meinbefehel.log" geschrieben.

Archivieren/Löschen:
Schau dir mal logrotate ( man logrotate ) an. Damit wird so etwas erledigt. Dazu auch die schon vorhandenen Konfigs unter "/etc/logrotate.d".

Gruß

Milbret
Beiträge: 827
Registriert: 26.05.2008 12:04:54
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Nörten-Hardenberg
Kontaktdaten:

Re: Bashscript soll in Logfile schreiben

Beitrag von Milbret » 16.10.2009 10:53:19

Also für mich klingt eine simple Lösung so.

1.Richte einen einfachen Cron ein, der täglich ausgeführt wird und dein Skript damit startet und laufen lässt.
2.Leite die Ausgaben deines Skripts in die Logdatei um.

Somit kannst du einfach deine Einträge der letzten 24 Stunden loggen und hast auch nur diese.
Dazu muss man nicht einmal mit rsyslog rumspielen.

Mit dem Inhalt deines Skripts kann man hier bestimmt auch deinem Problem besser auf den Grund gehen und dir zeigen was angepasst werden müsste.

Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever :D

Altmeister
Beiträge: 2
Registriert: 15.10.2009 18:42:56

Re: Bashscript soll in Logfile schreiben

Beitrag von Altmeister » 16.10.2009 19:52:23

Ok, das Skript sollte eigentlich nur Die CPU und HDD Temps loggen um zu sehen ob die Kühlung ausreicht. Das ganze dann von 0 Uhr bis 23:50 Uhr alle 10 Minuten ein Eintrag und pro Tag ein Log. 7 Tage aufbewahren, was älter ist löschen.

Das Skript sollte in etwas so aussehen: (noch nicht getestet)

Code: Alles auswählen

#!/bin/bash

logfile="/var/log/Temperatur_$(date -Is).log

core0="$(lm-sensors | grep core0)"
core1="$(lm-sensors | grep core1)"
hdd1=$(hddtemp /dev/sdb5)"
hdd2=$(hddtemp /dev/sdb6)"

function main() {
   echo "$(date +%T):"
   echo "   CPU:
   echo "      $core0"
   echo "      $core1"
   echo "   Festplatten:"
   echo "      $hdd1"
   echo "      $hdd2"
}

main >$logfile

Antworten