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

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -