lapvika

Bestimmtes Datum von einem file auslesen - Linux

Hallo zusammen,

ich möchte mir in Linux aus der /var/log/messages Dateiinhalte der letzten 24 Stunden anzeigen lassen, alles was davor in die Datei geschrieben wurde möchte ich nicht sehen.

Beispiel:

ich habe eine Datei in der steht

Aug 24 09:41:54 hier steht text 1
Aug 26 13:06:08 hier steht text 2
Sep 2 03:04:26 hier steht text 3
Sep 2 03:04:33 hier steht text 4
Sep 2 03:08:41 hier steht text 5
Sep 2 12:41:43 hier steht text 6
Sep 2 12:43:33 hier steht text 7

Ich benötige jedoch nur die Dateiinhalte der letzten 24 Stunden, also dass man mit date das aktuelle Datum ausliest und sich dann die letzten 24 Stunden ausgeben lässt und der Rest nicht mehr zu sehen ist.

Beispielsweise ist es Sep 3 12:44 Uhr, dann sollte die Ausgabe so aussehen:

Sep 2 12:41:43 hier steht text 6
Sep 2 12:43:33 hier steht text 7

Wenn es Sep 3 13:00 Uhr ist soll die Ausgabe leer sein also nichts zu sehen sein.

Ich habe es schon hiermit versucht

grep `(date +"%b %d %H:" -d "24hours ago")` /var/log/messages

jedoch funktioniert es damit nicht.

Kennt jemand die Lösung meines Problems?

Vielen Dank schon mal!
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 248180

Url: https://administrator.de/forum/bestimmtes-datum-von-einem-file-auslesen-linux-248180.html

Ausgedruckt am: 24.04.2025 um 11:04 Uhr

Lochkartenstanzer
Lochkartenstanzer 03.09.2014 aktualisiert um 14:50:30 Uhr
Goto Top
Moin,

das funktioniert so mit grep nicht. Du müßtest ein Skript oder Programm schreiben, daß die logdateie einliest, die einträge am zeilenende interpretiert und dann diese ausgibt, falls die neuer sind als das gewünschte Datum.


Wenn es allerdings ab Mitternacht des Vortages auch geht, ist es einfacher:

grep  "^`date -d yesterday \"+%b %_d\"`" /var/log/syslog ; grep  "^`date \"+%b %_d\"`" /var/log/syslog

lks
lapvika
lapvika 03.09.2014 aktualisiert um 15:08:47 Uhr
Goto Top
Hallo, danke erst einmal.

Ich muss dazu sagen, dass ich da noch ein Anfänger in diesem Bereich bin ich bin gerade dabei mich einzuarbeiten.

Wie funktioniert das ganze für ein Zeitintervall, beispielsweise 5 Minuten. Also das alles was innerhalb der letzten 5 Minuten in die messages geschrieben wurde angezeigt wird, alles was älter als 5 Minuten ist nicht mit angezeigt wird?

Vielen Dank!
Lochkartenstanzer
Lochkartenstanzer 03.09.2014 um 15:10:46 Uhr
Goto Top
Zitat von @lapvika:

Wie funktioniert das ganze für ein Zeitintervall, beispielsweise 5 Minuten. Also das alles was innerhalb der letzten 5
Minuten in die messages geschrieben wurde angezeigt wird, alles was älter als 5 Minuten ist nicht mit angezeigt wird?


wie ich schon sagte: Du mußt die Daten am anfang der zeile einlesen udn interpretieren. durch einfaches grep funktioniert das nicht.

lks
lapvika
lapvika 03.09.2014 um 15:18:50 Uhr
Goto Top
Ok,

und wie genau macht man sowas?

Vielen Dank!
Lochkartenstanzer
Lochkartenstanzer 03.09.2014 aktualisiert um 15:23:34 Uhr
Goto Top
Zitat von @lapvika:

Ok,

und wie genau macht man sowas?


Indem man ein prgramm schreibt, daß aus Monat, tag und Uhrzeit eine Zahl macht, die man dann mit dem refenrzdatum vergleicht.

Alternativ kann man auch sukzessive Monat, tag, Stunde, Minute, und sekunde vergleichen, ist aber meist aufwendiger zu formulieren.

lks
lapvika
lapvika 03.09.2014 um 15:25:12 Uhr
Goto Top
"Indem man ein prgramm schreibt, daß aus Monat, tag und Uhrzeit eine Zahl macht, die man dann mit dem refenrzdatum vergleicht."


Wie genau sieht so etwas aus?

Wie gesagt ich bin da noch ganz frisch in der Materie.

Danke für die Hilfe!
colinardo
Lösung colinardo 03.09.2014, aktualisiert am 04.09.2014 um 07:43:01 Uhr
Goto Top
Moin,
Zitat von @lapvika:
Wie genau sieht so etwas aus?
z.B. so:
#!/bin/bash
date1=$(date '+%s')  
date2=$(date -d "24 hours ago" '+%s')  
while read line
do
    line_date_sec=$(date -d "$(echo "$line" | awk '{print $1,$2,$3}')" '+%s')  
    if [[ $date2 -le $line_date_sec && $date1 -ge $line_date_sec ]];then
    	echo "$line"  
    fi
done < /var/log/messages
Grüße Uwe
Lochkartenstanzer
Lochkartenstanzer 03.09.2014 um 15:56:17 Uhr
Goto Top
Zitat von @lapvika:

Wie genau sieht so etwas aus?

Siehe uwes Skript.

Wie gesagt ich bin da noch ganz frisch in der Materie.

Dann soltest Du anfangen, dich damit zu beschäftigen:

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

lks
lapvika
lapvika 04.09.2014 um 07:42:55 Uhr
Goto Top
Vielen Dank Uwe,

hast mir sehr geholfen.

Gruß
lapvika