Last access time not updated?

1.6k Views Asked by At

Here is what I am trying to do: I need to know whenever a file is read or used by a tool (e.g. compiler). I use ls to get the last accessed time using the following command

ls -l --time=access -u --sort=time --time-style=+%H:%M:%S

or

stat "filename"

But my files access times are not getting updated, I figured its because of caching! please correct me if I am wrong. So my next step was how can I clear the cache, researching it I came across some variations of the following command:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

The thing is even after I execute this command my file access time is not updated! My way of testing access time is by opening the file in gEdit or call gcc on my source file.

My setting: Ubunto 12.0.4 running on VMware, which is running on Win 7

Question: what am I missing or doing wrong that my access time is not being updated??

1

There are 1 best solutions below

0
On BEST ANSWER

What you're observing is the change in the default mount option starting 2.6.30 in order to bring about filesystem performance improvement.

Quoting from man mount:

   relatime
          Update inode access times relative to  modify  or  change  time.
          Access time is only updated if the previous access time was ear‐
          lier than the current modify or change time. (Similar  to  noat‐
          ime,  but  doesn't break mutt or other applications that need to
          know if a file has been read since the last time  it  was  modi‐
          fied.)

          Since Linux 2.6.30, the kernel defaults to the behavior provided
          by this option (unless noatime was  specified), and the stricta‐
          time  option  is  required  to  obtain traditional semantics. In
          addition, since Linux 2.6.30, the file's  last  access  time  is
          always  updated  if  it  is more than 1 day old.

(Also refer to this and this.) You might be looking for the following mount option:

   strictatime
          Allows to explicitly requesting full atime updates.  This  makes
          it  possible  for  kernel to defaults to relatime or noatime but
          still allow userspace to override it. For more details about the
          default system mount options see /proc/mounts.