Abfrage Logfile

G

grechos

Eroberer
Moin an alle
wie kann ich ein Logfile mit einer IF abfrage auf eine aktualisierung abfragen
Das heißt ich will eine if abfrage machen wenn das Logfile neu geschrieben wurde dann mach dies
wenn nicht dann dies
hat jemand eine Idee


gruß an Alle
 
und unter welchem Abschnitt sollte man da schauen
 
na, am besten oben anfangen und dann langsam nach unten arbeiten.
 
hmmm dann brauch ich ja ewig
ne if abfrage krieg ich ja hin
aber die aktualisierung im Logfile das macht mir probleme
 
Auf die Schnelle (ungeprüft):

Code:
oldtime=$(stat -f "%m" logfile)
...
if [ $oldtime -ne $(stat -f "%m" logfile) ]
then
  echo "logfile modifiziert"
else
  echo "logfile nicht modifiziert"
fi

Gruss, Xanti
 
hi xanti
was macht eigentlich das oldtime=$(stat -f "%m" logfile)
 
Es ermittelt die modtime vom logfile und weist sie der Variable oldtime zu. Mehr dazu unter "man stat" und "man bash".

Gruss, Xanti
 
stat -f funzzt nicht
habe Hpux
ist das da anders
 
ja, das ist da anders, wie du festgestellt hast :). Nächstes Mal direkt dazuschreiben, was du benutzt.

"man stat" und schau, was der vergleichbare Switch ist.
 
welche shell und welche hp-ux-version benutzt du denn eigentlich ? ab der 10.0 werden die kornshell und die Bourneshell durch die osf-posix-shell ersetzt.
 
stat ist aber eine Anwendung und nicht Bestandteil der Shell, von daher erst einmal egal.
 
so habs mal probiert


grfile="dimigr.log"
klfile="dimikl.log"
#sleep 5

echo "$grfile"
echo "$klfile"


if ["$grfile" -nt "$klfile"]
then
echo "dimi2 ist groesser als dimi1 logfile"
else
echo "dimi2 hat sich gegenueber dimi1 nicht verdndert"
fi


nur ein problem habe ich noch
die grfile Variable in der IF anweisung wird nicht erkannt und als Fehler ausgegeben


Weis da jemand weiter
 
Äh,

was glaubst du denn was bei

Code:
dimigr.log > dimikl.log

rauskommen soll?

Du kannst natürlich nicht zwei String numerisch vergleichen, das ist ja auch sinnlos, deshalb der Fehler.
 
@grechos: Am besten, Du postest mal die Fehlermeldung, aus Deiner Beschreibung werde ich nicht schlau. Ich vermute aber, dass er sich über Deine if-Bedingung muckiert. Also

Code:
if ["$grfile" -nt "$klfile"]

sollte

Code:
if [ "$grfile" -nt "$klfile" ]

sein. Beachte die Leerzeichen zwischen den eckigen Klammern. Wenn weiterhin Fehler kommen, poste bitte diese.

@ supersucker: man test:

Code:
s1 > s2       True if string s1 comes after s2 based on the binary value
                   of their characters.

Gruss, Xanti
 
Hallo
Ja, das mag schon sein Xanti, aber in diesem Fall sind die Strings ja nur Dateinamen.
Ich denke nicht, dass grechos Dateinamen vergleichen will.
@grechos
Wie du an die Dateigröße oder verwertbares Änderungsdatum per stat kommst, sagt dir dein man stat.
Ansonsten gilt was Xanti sagte, die genaue Fehlermeldung hilf weiter.
Gruß Wolfgang
 
Ja, das ist mir klar. Ich wollte supersucker nur drauf hinweisen, dass in Shellskripten Stringvergleiche mittels <>=, numerische Vergleiche dagegen über -ne, -gt ... behandelt werden.

In Perl ist es genau anders rum, k.A. was man sich dabei gedacht hat. Ist wahrscheinlich historisch gewachsen ;)

Gruss, Xanti
 
Xanti schrieb:
Ja, das ist mir klar. Ich wollte supersucker nur drauf hinweisen, dass in Shellskripten Stringvergleiche mittels <>=, numerische Vergleiche dagegen über -ne, -gt ... behandelt werden.

Achso, dann hatte ich das wohl missverstanden.
Wobei mir als numerischer Vergleich -nt unbekannt ist.

Außerdem ist wohl aus logischer Sicht der Vergleichstest nicht das, was sich
grechos davon erwartet.

Die Syntax unter perl scheint mir persönlich plausibler.
Numerische Vergleiche, mit bekannten mathematischen Operationszeichen.
Während mir dafür die umgekehrte Belegung für true und false in der Shell eingänglicher vorkommt.
0 = null Fehler, also wahr (shell)

Gruß Wolfgang
 
Wolfgang schrieb:
Achso, dann hatte ich das wohl missverstanden.
Wobei mir als numerischer Vergleich -nt unbekannt ist.

Außerdem ist wohl aus logischer Sicht der Vergleichstest nicht das, was sich
grechos davon erwartet.

Ich vermute mal, dass grechos zuerst sein Programmbeispiel mit "<" als Vergleichsoperator angegeben hat, und dann innerhalb von einer Minute in "-nt" geändert hat, so dass sein Post nicht als "editiert" gekennzeichnet war.

Wolfgang schrieb:
Während mir dafür die umgekehrte Belegung für true und false in der Shell eingänglicher vorkommt.
0 = null Fehler, also wahr (shell)...

Das ist 'ne beliebte Frage in der Unix/C-Prüfung. ;)
 
if ["$grfile" -gt "$klfile"]
das ist meine Abfrage und tatsächlich spinnt die If abfrage als fehler kriege
ich

./testlog[16]: [dimigr.log: not found.
dimi2 hat sich gegenueber dimi1 nicht verdndert


die linie 16 ist die If Abfrage wie kann ich die if Abfrage besser hinkriegen das er zwischen den den 2 Files irgendwie vergleichen kann


Gruß an Alle
 

Ähnliche Themen

If-Abfrage kommt nicht positiv zurück, obwohl Kriterium erfüllt

line 7: [: /dir1/dir2/dir3/dir4/filename... : binary operator expected

Switche abfragen über Script

Hilfe für ein shell script

günstiger Mehr-Kerner (CPU) für VMs

Zurück
Oben