View Full Version : IFS Objektdatum
Hallo,
wie kann ich das Datum Objekterstellung einer Datei im IFS ermitteln?
Kann jemand helfen?
Danke.
Petra
je nach Dateisystem sieht man das dem Objekt nicht an, da hülfe allenfalls Journalisierung, die das dann bei Erstellung protokolliert.
D*B
Am einfachsten geht das über die QSHELL mit dem Kommando
ls -lT
Da wird das Datum dann angezeigt.
Ansonsten geht's nur mit C-Funktionen wie stat().
Hallo Petra,
da gibt es ein Tool von Scott Clement mit dem kommst Du an das Erstellungsdatum. Das Tool kannst Du hier herunterladen:
Updated IFSDIR UDTF Provides Create Date | System iNetwork (http://systeminetwork.com/article/updated-ifsdir-udtf-provides-create-date)
Du könntest ruhig mal Listing a Directory Tree Contents (http://www.support.ecofitonline.com/showthread.php?258-Listing-a-Directory-Tree-Contents)anschauen.
(oder http://www.sss-software.de/inn/powerinfo/iNN-PowerInfo.pdf Lektion 3.5 (und 3.4) in Tekkie Corner).
OK, "ls -lT" zeigt nur das letzte Änderungsdatum an.
Es hilft wirklich nur die C-Funktion stat(), die ein Struktur übergibt.
In der Struktu gibts dann die Variable st_ctime, die das GMT-Datum in Sekunden seit dem 1.1.1970 enthält (Unixlike).
Per C-Funktion localtime() kann dann wieder in ein Datum umwandlen bzw. in ILERPG kann man auf das Datum 1.1.1970 die Sekunden addieren.
Achtung:
Die Zeit ist GMT (also Weltzeit) und wurde um den QUTCOFFSET zum damaligen Zeitpunkt korrigiert.
... meines Erachtens zeigt stat() dasselbe an, was ls -l auch anzeigt (und WRKLNK) ebenfalls, nämlich die Änderungsdaten - und ich wüsste auch nicht, wo ein Unix/Windows like Dateisystem sich das Erstellungsdatum merkt.
D*B
OK, "ls -lT" zeigt nur das letzte Änderungsdatum an.
Es hilft wirklich nur die C-Funktion stat(), die ein Struktur übergibt.
In der Struktu gibts dann die Variable st_ctime, die das GMT-Datum in Sekunden seit dem 1.1.1970 enthält (Unixlike).
Per C-Funktion localtime() kann dann wieder in ein Datum umwandlen bzw. in ILERPG kann man auf das Datum 1.1.1970 die Sekunden addieren.
Achtung:
Die Zeit ist GMT (also Weltzeit) und wurde um den QUTCOFFSET zum damaligen Zeitpunkt korrigiert.
andreaspr@aon.at
27-07-10, 14:01
... meines Erachtens zeigt stat() dasselbe an, was ls -l auch anzeigt (und WRKLNK) ebenfalls, nämlich die Änderungsdaten - und ich wüsste auch nicht, wo ein Unix/Windows like Dateisystem sich das Erstellungsdatum merkt.
D*B
Ich weis zwar auch nocht wo sowas gespeichert wird, jedoch muss es irgendwo sein, denn mit folgendem Befehl, kann ich mir alle Files anzeigen lassen, die vor 10 Tagen erstellt wurden:
find /home/. -name "test1.txt" -ctime +10
und mit -mtime die Files die in diesem Zeitraum modifiziert wurden
und mit -atime die Files die in diesem Zeitraum geöffnet wurden
Wenn du mit wrklnk und Auswahl 8 dir die Attribute ansiehst, kann man auch das Erstelldatum sehen. Dieses weicht bei mir zumindest vom letzten Änderungs/Zugriffsdatum auch ab.
In der stat-Struktur gibts tatsächlich nur 3 Felder:
st_atime = Access-Time
st_mtime = Modification-Time
st_ctime = Status-Change-Time
Auf der AS/400 gibts aber noch ein API, mit dem sich die Erstellzeit auslesen läßt:
Qp0lGetAttr()--Get Attributes (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/qgetattr.htm)
QP0L_ATTR_CREATE_TIME ist das Attribut der Wahl.
Unix bietet da selber wirklich nichts, da Unix die Info nicht speichert und somit Unix-API's nicht gehen.
Windows wiederum hat diese Information.
Die "ctime" ist die letzte Statusänderungs-Zeit. Diese wird z.B. auch bei CHGAUT oder eben Befehlen gesetzt, die das Objekt selber aber nicht dessen Daten verändern.