ファイルをcatする2回目の呼び出しでは、アクセス時間は更新されません。ファイルの内容が表示されるたびにアクセス時間が更新されることを期待していました。
Webブラウザーでファイルを開くと、同じ動作が見られます。アクセス時間は常に更新されません。
アクセス時間を誤解していますか? 2つの猫の鳴き声の違いは何ですか?
$タッチテスト $ stat test ファイル: `test ' サイズ:0ブロック:0 IOブロック:4096通常の空のファイル デバイス:803h/2051d Inode:152694リンク:1 アクセス:(0664/-rw-rw-r--)Uid:(1001/aaron)Gid:(1001/aaron) アクセス:2012-08-21 11:05:40.586020996 +0200 変更:2012-08-21 11:05:40.586020996 +0200 変更:2012-08 -21 11:05:40.586020996 +0200 誕生:- $ vim test $ stat test ファイル: `test ' サイズ:5ブロック:8 IOブロック:4096レギュラーファイル デバイス:803h/2051d Inode:152694リンク:1 アクセス:(0664/-rw-rw-r--)Uid:(1001/aaron)Gid:(1001/aaron) アクセス:2012-08-21 11:05:52.890021630 +0200 Modify:2012 -08-21 11:06:31.606023626 +0200 変更:2012-08-21 11:06:31.638023629 +0200 誕生:- $猫test test $ stat test ファイル: `test ' サイズ:5ブロック:8 IOブロック:4096レギュラーファイル デバイス:803h/2051d Inode:152694リンク:1 アクセス: (0664/-rw-rw-r--)Uid:(1001/aaron)Gid:(1001/aaron) アクセス:2012-08-21 11:06:44.662024298 +0200 変更:2012-08-21 11:06:31.606023626 +0200 変更:2012-08-21 11:06:31.638023629 +0200 誕生:- $ cat test test $ stat test ファイル: `test ' サイズ:5ブロック:8 IOブロック:4096の通常ファイル デバイス:803h/2051d Inode:152694リンク:1 アクセス:(0664/-rw-rw-r--)Uid:(1001/aaron )Gid:(1001/aaron) アクセス:2012-08-21 11:06:44.662024298 +0200 変更:2012-08-21 11:06:31.606023626 +0200 変更:2012-08-21 11:06:31.638023629 +0200 出生:-
http://en.wikipedia.org/wiki/Stat_(system_call)
ファイルに書き込むとmtimeとctimeが変更され、ファイルを読み取るとatimeが変更されます。その結果、POSIX準拠のシステムでは、ファイルを読み取ると書き込みが発生しますが、これは批判されています。この動作は通常、/ etc/fstabにマウントオプションを追加することで無効にできます。
ただし、atime更新をオフにすると、POSIX準拠、および一部のアプリケーション、特にmuttメールリーダー(一部の構成)、および一部のファイル使用監視ユーティリティ(特にtmpwatch)が壊れます。最悪の場合、atimeを更新しないと、一部のバックアッププログラムがファイルのバックアップに失敗する可能性があります。
Linuxカーネルの開発者であるIngoMolnárは、「おそらく、これまでで最も愚かなUnixの設計アイデア」と呼び、次のように付け加えました。そして、すでにキャッシュされており、キャッシュから読み取ったすべてのファイルについて、ディスクに書き込みを行います! '"彼はさらに、パフォーマンスへの影響を強調しました。
Atimeの更新は、Linuxが今日持っている最大のIOパフォーマンス不足です。 atime更新を取り除くことで、過去10年間のすべてのページキャッシュ速度向上combinedよりも毎日のLinuxパフォーマンスが向上します。
noatimeまたはrelatimeがカーネルのデフォルトのマウントオプションかどうかを知る方法
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.
....
これは、特定のパーティションがどのようにマウントされたか、そして猫が私が期待したとおりにアクセス時間を更新しない理由です。