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

Popular posts from this blog

All overlapping substrings matching a java regex -

c++ - Using OpenSSL in a multi-threaded application -

php - Deleting/Renaming a locked file -