file accessed time in linux using python -
this question continuation of question in another thread.since point of question different,i thought i'd post new question.
i experimented getting accessed time files in linux
machine(ubuntu lucid
),using python
.the idea have function goes through files in particular directory,see if have been accessed in last 2 minutes,and print files have not been accessed.
for accessing file ,i defined readfile()
method
def readfile(fname): open(fname) f: ct = f.read() print 'read file at:',time.time() print 'length of file:',len(ct)
for convenience ,i defined filenames
f1='/home/me/dev/misc/usedfiles/one.txt' f2='/home/me/dev/misc/usedfiles/two.txt' f3='/home/me/dev/misc/usedfiles/three.txt' f4='/home/me/dev/misc/usedfiles/four.txt'
sothat calling readfile(f1)
access file one.txt
i defined function go through directory , print files not accessed in last 2 minutes
def files_not_accessed(): dirname = '/home/me/dev/misc/usedfiles' filenames = os.listdir(dirname) filenames = [os.path.join(dirname,filename) filename in filenames] filename in filenames: try: last_access = os.stat(filename).st_atime #secs since epoch except ioerror: print 'could not info %s' % filename else: timediff = time.time()-last_access print filename,' last_access=',last_access print filename,' timediff=',timediff if timediff > 2*60: print filename,'---older 2 mts' print ''
initially ran function files_not_accessed()
, gave following output
/home/me/dev/misc/usedfiles/two.txt last_access= 1341459500.0 /home/me/dev/misc/usedfiles/two.txt timediff= 11668.9905779 /home/me/dev/misc/usedfiles/two.txt ---older 2 mts /home/me/dev/misc/usedfiles/one.txt last_access= 1341460126.0 /home/me/dev/misc/usedfiles/one.txt timediff= 11042.990674 /home/me/dev/misc/usedfiles/one.txt ---older 2 mts /home/me/dev/misc/usedfiles/three.txt last_access= 1341459504.0 /home/me/dev/misc/usedfiles/three.txt timediff= 11664.99072 /home/me/dev/misc/usedfiles/three.txt ---older 2 mts /home/me/dev/misc/usedfiles/four.txt last_access= 1341459510.0 /home/me/dev/misc/usedfiles/four.txt timediff= 11658.990757 /home/me/dev/misc/usedfiles/four.txt ---older 2 mts
now,i ran readfile(f1)
function read file one.txt
read file at: 1341471195.88 length of file: 47293
as can see output of files_not_accessed()
function,the file one.txt
last accessed @ 1341460126.0 ,and again read @ 1341471195.88 readfile(f1)
and (immediately)ran files_not_accessed()
function , expected ,it not output file one.txt
since accessed.i expected last_access time 1341471195.88
strangely,i again getting previous output
/home/me/dev/misc/usedfiles/two.txt last_access= 1341459500.0 /home/me/dev/misc/usedfiles/two.txt timediff= 11715.1272521 /home/me/dev/misc/usedfiles/two.txt ---older 2 mts /home/me/dev/misc/usedfiles/one.txt last_access= 1341460126.0 /home/me/dev/misc/usedfiles/one.txt timediff= 11089.1273479 /home/me/dev/misc/usedfiles/one.txt ---older 2 mts /home/me/dev/misc/usedfiles/three.txt last_access= 1341459504.0 /home/me/dev/misc/usedfiles/three.txt timediff= 11711.1273921 /home/me/dev/misc/usedfiles/three.txt ---older 2 mts /home/me/dev/misc/usedfiles/four.txt last_access= 1341459510.0 /home/me/dev/misc/usedfiles/four.txt timediff= 11705.1274359 /home/me/dev/misc/usedfiles/four.txt ---older 2 mts
i cannot understand why file one.txt
has last_access= 1341460126.0
instead of expected 1341471195.88
any idea why happens?
ubuntu lucid default mounts filesystems "relatime". if need strict atimes, need mount "strictatime" (at performance cost).
Comments
Post a Comment