[NEWSboard IBMi Forum]
  1. #1
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392

    Alte IFS-Dateien löschen

    Hallo allerseits,

    wir haben eine Anwendung, die ständig temporäre Dateien in ein IFS-Verzeichnis stellt.
    Diese würde ich gerne automatisch löschen, und zwar wenn sie z.B. 1 Woche alt sind.

    Hier im Forum gibt es oft genial-einfache Lösungen, auf die man als Einzelkämpfer nicht kommt. Hat jemand eine Idee?
    Sonst müsste ich klassisch drangehen (Alle Dateien listen und anschließend abh. vom Datum entscheiden ob zu löschen oder nicht)

    Gruß,
    Christian

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Am einfachsten ist hier wieder die QSH:

    ls -lT

    listet die Dateien auf mit ihrem Erstelldatum (ls -luT <= mit letztem Zugriff).
    Diese Ausgabe kann man in eine PF umleiten und per Programm dann auslesen.
    Das Datumformat ist etwas gewöhnungbedürftig, man kann es aber auswerten um dann per DEL die Datei zu löschen.

    Mann kann es auch mit C-Funktionen machen. Allerdings ist das etwas komplizierter um ein Verzeichnis auszulesen.

    In einer STAT-Structur steht das Datum dann in Sekunden seit 1.1.1970. Per C-Funktion localtime() bekommt man das dann wieder in eine neue Struktur (tm) mit Datumsauflösung.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    also doch programmieren - schade.

    Trotzdem danke,
    ls ist sicher einfacher auszuwerten als dsplnk oder sowas.

    Gruß,
    Christian

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Mit etwas Mühe kann man ein QSH-Script daraus machen:

    echo "Text" >MyTextFile;
    touch -t YYMMDD MyTextFile;

    ls | (
    while read FileName;
    do
    if (test $FileName -ot MyTextFile) then
    rm $FileName;
    fi;
    done;
    )

    YYMMDD sollte vorher als "Heute" - 7 Tage berechnet werden können.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    das ist eine Unix Frage - wenn ich meinem Unix Buch und meinen (bescheidenen) Unix Kenntnissen trauen darf, dann sollte
    find /meinPfad -ctime +n -exec rm {} \;
    das können.
    - meinPfad kann auch ein Muster enthalten
    - n ist die Anzahl der Tage seit letzter Änderung
    - Vorsicht: arbeitet auch Unterverzeichnisse ab und ist immens mächtig, gut testen!!!
    Starten kann man das auch von OS/400 mit QSH CMD('dueddelidue')

    D*B


    Zitat Zitat von cbe Beitrag anzeigen
    Hallo allerseits,

    wir haben eine Anwendung, die ständig temporäre Dateien in ein IFS-Verzeichnis stellt.
    Diese würde ich gerne automatisch löschen, und zwar wenn sie z.B. 1 Woche alt sind.

    Hier im Forum gibt es oft genial-einfache Lösungen, auf die man als Einzelkämpfer nicht kommt. Hat jemand eine Idee?
    Sonst müsste ich klassisch drangehen (Alle Dateien listen und anschließend abh. vom Datum entscheiden ob zu löschen oder nicht)

    Gruß,
    Christian
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    Zitat Zitat von BenderD Beitrag anzeigen
    find /meinPfad -ctime +n -exec rm {} \;
    ...
    QSH CMD('dueddelidue')
    Ha!

    genau an so was dachte ich,
    klasse, danke!

  7. #7
    Registriert seit
    Sep 2007
    Beiträge
    24
    Hallo,
    Ich will die Dateien nicht nach erstelldatum sondern nach letztem zugriff löschen und habe folgenden Script benutzt, allerdings kommt immer ein Fehler.

    cd /LANSA_dcxpgmlib/AS2/as2log/siemsisas2/outbound/
    echo "Text" >MyTextFile;
    touch -t 02290000 MyTextFile;
    ls |(
    while read FileName;
    do
    echo $FileName;
    if (test $FileName -luT MyTextFile) then
    echo "Lösch - Dummy"
    fi;
    done;
    )
    rm MyTextFile





    Fehlermeldung:

    test: 001-0062 Syntaxfehler beim Auswerten eines Ausdrucks: Primärzahl nicht gefunden.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn der Dateiname ggf. Leerzeichen enthält, ist die Variable in doppelte Anführungszeichen zu setzen:

    if (test "$FileName" -luT MyTextFile) then
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Dateien auf dem IFS löschen
    By codierknecht in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 27-08-08, 05:13
  2. Dateien aus dem IFS löschen
    By Bobou in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 16-01-07, 10:26
  3. Dateien im IFS bzw. QDLS über Explorer löschen
    By dino in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 08-12-06, 19:14
  4. Dateien in QDLS bzw. IFS über Explorer löschen
    By dino in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 22-05-06, 18:59
  5. Dateien im freigegebenen Ordner im IFS löschen
    By Enatz in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 07-12-05, 21:10

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •