... and don't want anyone to know
Note that there's also ctime, which on most current Unix systems has the semantics "inode change time", and restoring atime is considered an inode change operation. In other words, even though atime could be restored, those who "really want to know" would check ctime in this case...
#!/usr/bin/perl -w
use strict;
sub show_times {
my ($f, $note) = @_;
printf "atime=%d, mtime=%d, ctime=%d - %s\n", (stat($f))[8..10], $
+note;
}
my $file = shift or die $!;
# save atime
my ($atime, $mtime) = (stat($file))[8,9];
show_times($file, "initially");
# read from file
{ open my $fh, '<', $file or die $!; <$fh>; }
show_times($file, "after read");
# restore atime
utime($atime, $mtime, $file) or die "utime: $!";
show_times($file, "after atime restored");
$ touch somefile && sleep 2 && ./fix_accesstime.pl somefile
atime=1386693000, mtime=1386693000, ctime=1386693000 - initially
atime=1386693002, mtime=1386693000, ctime=1386693000 - after read
atime=1386693000, mtime=1386693000, ctime=1386693002 - after atime res
+tored
Note that even though atime is restored, ctime is still being updated.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.