BSDForen.de  

Zurück   BSDForen.de > Geekstuff > Programmieren

Antwort
 
Themen-Optionen Thema bewerten Ansicht
Alt 22.03.2012, 14:43   #1
micp
Registered User
 
Registrierungsdatum: Mar 2012
Beiträge: 3
Sh-Script: Verzeichnisänderung abfragen

Hallo,
wie kann ich das /usr/src Verzeichnis auf Veänderung prüfen, das heisst, Files gelöscht/neu hinzugekommen oder etwas editiert (durch csup)? Dabei ist nur wichtig, ob sich in dem Verzeichnis etwas geändert hat.
Idee war
~# du /<dir>/ |tail -N 1|awk {'print $1'}
um das erste Feld der letzten Ausgabzeile (die Summe aller Dateigrössen) zu bekommen. Nach einem 'make update', das einiges aktualisierte, klappte es auch, der Wert änderte sich. Nach einem zweiten, kurz danach, csup editierte nur eine Datei, nicht mehr, der Wert blieb, trotz Änderung im Verzeichnis, gleich.

Wie könnte ich es noch zuverlässig abfragen?
Zum Einsatz kommt FreeBSD 9 64bit und die (a)sh


viele Grüsse
micp ist offline   Mit Zitat antworten
Alt 22.03.2012, 14:53   #2
KobRheTilla
used register
 
Registrierungsdatum: Jan 2011
Beiträge: 254
Zitat:
Zitat von micp Beitrag anzeigen
Idee war
~# du /<dir>/ |tail -N 1|awk {'print $1'}
um das erste Feld der letzten Ausgabzeile (die Summe aller Dateigrössen) zu bekommen. Nach einem 'make update', das einiges aktualisierte, klappte es auch, der Wert änderte sich. Nach einem zweiten, kurz danach, csup editierte nur eine Datei, nicht mehr, der Wert blieb, trotz Änderung im Verzeichnis, gleich.
Eine Änderung im Inhalt hat nicht immer eine Änderung der Dateigröße als Konsequenz. Am sichersten gehst du IMHO, wenn du eine Prüfsumme auf die Datei anwendest. Es muss ja nicht MD5/SHA sein, es reicht sicherlich auch etwas, was Dateigröße+mtime verknüpft, so wie es rsync macht.

Rob
KobRheTilla ist offline   Mit Zitat antworten
Alt 22.03.2012, 15:18   #3
Tron
Registered User
 
Registrierungsdatum: Apr 2004
Beiträge: 267
Code:
#! /bin/sh set -e -u SRC='/usr/src/' CMP='/usr/.src-compare' if [ ! -e "$CMP" -o "$CMP" -ot "$SRC" ]; then echo "$SRC changed" # ... # now do stuff # ... touch -r "$SRC" "$CMP" fi
Achtung: Das detektiert nur Änderungen in /usr/src selbst, nicht in dessen Unterverzeichnissen! Aber du schriebst, dass das das ist, was du willst.
Tron ist offline   Mit Zitat antworten
Alt 22.03.2012, 17:56   #4
micp
Registered User
 
Registrierungsdatum: Mar 2012
Beiträge: 3
Netter Gedanke, wird mal für später abgespeichert.
Leider hat er hier nicht funktioniert, weil, unerwartet, der Timestamp von /usr/src nicht gändert wird, wenn da drunter nur was editiert wurde. Habe es getestet, indem ich in der /usr/src/UPDATING einen beliebigen Buchstaben ersetzt habe, Datei geändert, Grösse bleibt gleich, auch etwas hinzugefügt, Grösse ändert sich, aber die Zugriffszeit von /usr/src nicht. Kopieren einer Datei da rein, klappt es. Merkwürdig.

Danke bis hierhin. Ich tüftele noch ein bisschen, wäre in der Zwischenzeit für weitere Hinweise dankbar. Was letztendlich geklappt hat, poste ich dann hier rein.
micp ist offline   Mit Zitat antworten
Alt 22.03.2012, 17:59   #5
Yamagi
Possessed With Psi Powers
 
Benutzerbild von Yamagi
 
Registrierungsdatum: Apr 2004
Ort: Schleswig-Holstein
Beiträge: 6.556
Yamagi eine Nachricht über ICQ schicken
Wenn du Software nachinstallieren kannst, schaue dir mal wait_on an: http://www.freshports.org/sysutils/wait_on/
__________________
Eure Tastatur verfügt nicht umsonst über zwei Shift-Tasten! Benutzt sie bitte, denn sonst ist es mir fast unmöglich euere Posts zu entziffern.

Yamagi ist offline   Mit Zitat antworten
Alt 23.03.2012, 08:12   #6
micp
Registered User
 
Registrierungsdatum: Mar 2012
Beiträge: 3
Guten Morgen,
nach stundenlangem Googlen und Ausprobieren gestern habe ich mich mich jetzt für ein anderes Vorgehen entschieden: nicht mehr fragen, ob /usr/src sich verändert hat, sondern ob csup etwas gemacht hat.
Code:
[...] csup -L 2 -h cvsup8.FreeBSD.org /etc/stable-supfile 2>&1 |tee /usr/src/update-src.log grep -iE "(Add|Checkout|Edit|Delete)" /usr/src/update-src.log if [ $? = 0 ]; then echo -e "\nSourcen aktualisiert" else echo -e "\nSourcen unveraendert" fi rm /usr/src/update-src.log [...]
micp ist offline   Mit Zitat antworten
Alt 23.03.2012, 08:35   #7
mark05
Registered User
 
Registrierungsdatum: Nov 2003
Ort: Bergisch Gladbach
Beiträge: 569
moin

alternativ kann man shell befehl stat verwenden , jedoch muss man dann eine 2te tabelle da vorhalten
mit den letzten prueft werten.


ich habe mir ein perl modul gebaut was mit dem perl stat dateien und verzeichnisse ueberwacht.

sieht im prinzip dann so aus.

Code:
use FileWatch; my $fw=FileWatch->new(); $fw->fw_add({file=>myfile2monitor,}); while (1) { my $monitor=$fw->fw_check(); if ( $monitor->{'returncode'} =~ /[_]_new[_]events/smx ) { # do something } sleep 5 ; # interval }
holger

Geändert von mark05 (23.03.2012 um 08:41 Uhr).
mark05 ist offline   Mit Zitat antworten
Antwort


Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus
Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
Shell Script Fehler Daroo FreeBSD - Allgemein 27 27.04.2011 10:35
Fehler in meinem Backup Script Crunk_Bass FreeBSD - Anwendungen und Ports 7 06.02.2010 21:34
uptime im sh script Brusko Programmieren 27 08.04.2009 21:01
Funktion in sh script? cat1510 Programmieren 16 11.01.2007 19:22
ppp.link script Problem und T-DSL moxxito FreeBSD - Netzwerk 3 30.10.2003 00:04


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.


Powered by vBulletin (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.