Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Find script zeit auslesen

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.08.2003
    Beiträge
    15

    Find script zeit auslesen

    Hallo,
    ich bräuchte mal eure hilfe bei einem find script, das script soll alle Dateien finden die mit .xml und .eps enden, und soll mir dann alle die älter als 1ne std. sind anzeigen!

    den such befehl hab ich bereits,nur wie ich dass mit der einen std. machen soll, da hab ich keine idee für:

    find $ordner -type -f | grep -v .rsrc | grep -v OMT.XML | grep -v test | xargs ls -lc

  2. #2
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Code:
    find $ordner -type f \( -name "*.xml" -o -name "*.eps" \) -mmin +60 -exec ls -lc {} \;

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.08.2003
    Beiträge
    15
    Geht net, sorry hab eine angabe vergessen, das Script soll unter Solaris 9 laufen, die option -mmin gibt es unter sol. leider nicht

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    und wenn du das Datum für jede Datei mit ls oder so ausliest?

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    da gibt's doch aber bestimmt ein paar andere -mXXX Optionen oder?

  6. #6
    Registrierter Benutzer
    Registriert seit
    14.08.2003
    Beiträge
    15
    Ja, mminfo z.B. , aber die bringen auch nicht allzufiel. Ich hab es schon probiert mit xargs ls -lc und dann mit awk die Zeile mit dem Datum zu nehemen, funzt aber net, da auch dateien von 2002 dabeisind und diese nur mit der Jahreszahl und nicht mit dem Erstelldatum angegeben werden

  7. #7
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    und wenn du date brauchst?
    Für jede Datei checken:
    date +%k
    minus
    date -r datei +%k

    und dann mit test checken ob die Differenz > 0 ist.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  8. #8
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Code:
    find2perl $ordner -type f \( -name "*.xml" -o -name "*.eps" \) -type f
    Obiges schmeisst schon mal den Perl-Code ohne die Zeiteingrenzung raus, etwas angepasst sieht das dann so aus:
    Code:
    #! /usr/bin/perl -w
        eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
            if 0; #$running_under_some_shell
    
    use strict;
    use File::Find ();
    
    # Set the variable $File::Find::dont_use_nlink if you're using AFS,
    # since AFS cheats.
    
    # for the convenience of &wanted calls, including -eval statements:
    use vars qw/*name *dir *prune/;
    *name   = *File::Find::name;
    *dir    = *File::Find::dir;
    *prune  = *File::Find::prune;
    
    
    # Traverse desired filesystems
    File::Find::find({wanted => \&wanted}, '/DEIN/SUCH/PFAD');
    exit;
    
    
    sub wanted {
        my ($seconds);
    
        ($seconds = (stat($_))[9])
         && -f _ 
         && (
            /^.*\.xml\z/s
            || /^.*\.eps\z/s
            )
        && -f _
        && ( $seconds < (time - (60 * 60)) )
        && print "$File::Find::name\n";
    }
    Geändert von fork (25-11-2003 um 18:29 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    14.08.2003
    Beiträge
    15
    Sorry, aber mit perl weis ich net allzuviel anzufangen, aber trotzdem danke!So ich hab jetzt ein script, dieses wird alle Stunde von der Crontab ausgeführt, allerdings kommen auch leere e-mails, könnt mir jemand sagen wo hier der fehler liegt??

    #/bin/sh

    #Variablen
    ###########

    STATUS=ok
    MASCHINE=
    PROJEKT=
    MAILHOST=mailhost
    SENDER=
    #RECEIVER=
    RECEIVER=

    # Check each Hotfolder which is configured in ../etc/check_hotfolder.conf
    ################################################## #######################

    uname -a | grep SunOS > /dev/null
    if [ $? = 0 ]
    then
    /usr/ucb/ps -axw > /tmp/check_hotf.ps
    else
    /bin/ps -axw > /tmp/check_hotf.ps
    fi

    for i in `cat /usr/local/check_hotfolder/etc/check_hotfolder.conf`
    do

    HOTFOLDER=`echo $i | awk -F"=" '{ print $1 }'`
    HOT_PATH=`echo $i | awk -F"=" '{ print $2 }'`

    # Find Script
    #######################

    if [ -f /tmp/$HOTFOLDER-find.out ]
    then
    find $HOT_PATH -type f | grep -v .rsrc | grep -v OMT.XML | grep -v test | fgrep -f /tmp/$HOTFOLDER-find.out > /tmp/find.msg.out
    find $HOT_PATH -type f | grep -v .rsrc | grep -v OMT.XML | grep -v test > /tmp/$HOTFOLDER-find.out
    else
    find $HOT_PATH -type f | grep -v .rsrc | grep -v OMT.XML | grep -v test > /tmp/$HOTFOLDER-find.out
    continue
    fi


    # Werden Dateien abgearbeitet?
    ##############################

    if [ -s /tmp/find.msg.out ]
    then
    STATUS="error"
    fi


    # Ist der Hotfolder Prozess gestartet?
    ######################################

    grep $HOTFOLDER /tmp/check_hotf.ps > /dev/null

    if [ $? != 0 ]
    then
    STATUS="norun"
    fi


    if [ $STATUS != "ok" ]
    then
    echo > /tmp/check_hotf.msg
    echo "Datum :" `date` >> /tmp/check_hotf.msg
    echo "Projekt : $PROJEKT" >> /tmp/check_hotf.msg
    echo "Maschine : $MASCHINE" >> /tmp/check_hotf.msg
    echo "Hotfolder: $HOTFOLDER" >> /tmp/check_hotf.msg
    echo >> /tmp/check_hotf.msg
    echo "Fehler:" >> /tmp/check_hotf.msg
    echo "-------" >> /tmp/check_hotf.msg

    if [ $STATUS = "error" ]
    then
    echo "Folgende Dateien wurden in der letzten halben Stunde nicht abgearbeitet:" >> /tmp/check_hotf.msg
    echo >> /tmp/check_hotf.msg
    echo `cat /tmp/find.msg.out` >> /tmp/check_hotf.msg
    fi

    if [ $STATUS = "norun" ]
    then
    echo "Der Hotfolder wurde nicht gestartet!" >> /tmp/check_hotf.msg
    fi

    echo >> /tmp/check_hotf.msg
    echo >> /tmp/check_hotf.msg
    echo >> /tmp/check_hotf.msg
    echo >> /tmp/check_hotf.msg
    echo "--------------------------------------------------------------------------------" >> /tmp/check_hotf.msg
    echo "Diese Nachricht wurde durch die DTS Hotfolderueberwachung automatisch generiert." >> /tmp/check_hotf.msg
    echo "Die Scripte zur Hotfolderueberwachung liegen auf dem jeweiligen System unter:" >> /tmp/check_hotf.msg
    echo "/usr/local/check_hotfolder" >> /tmp/check_hotf.msg
    echo "--------------------------------------------------------------------------------" >> /tmp/check_hotf.msg
    echo >> /tmp/check_hotf.msg

    ant -f /usr/local/check_hotfolder/etc/mail.xml \
    -Dmailhost=$MAILHOST \
    -Dsender=$SENDER \
    -Dreceiver=$RECEIVER \
    -Dsubject="[$MASCHINE] [$PROJEKT] Fehler in Hotfolder" \
    -Dmessagefile="/tmp/check_hotf.msg"
    fi
    done

  10. #10
    Registrierter Benutzer
    Registriert seit
    14.08.2003
    Beiträge
    15
    OK hat sich erledigt, hab den fehler, die STATUS variable musste unters do *schäm*

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •