猫がアクセス時間を変更しないのはなぜですか?


25

cat a fileを2回目に呼び出しても、アクセス時間は更新されません。ファイルの内容が表示されるたびにアクセス時間が更新されると予想していました。

Webブラウザでファイルを開くと、同じ動作が見られます。そのアクセス時間は一貫して更新されません。

アクセス時間を誤解していますか?2つの猫の呼び出しの違いは何ですか?

$タッチテスト
$統計テスト
  ファイル: `test '
  サイズ:0ブロック:0 IOブロック:4096通常の空のファイル
デバイス:803h / 2051d iノード:152694リンク:1
アクセス:(0664 / -rw-rw-r--)Uid:(1001 /アーロン)Gid:(1001 /アーロン)
アクセス: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 '
  サイズ:5ブロック:8 IOブロック:4096通常ファイル
デバイス:803h / 2051d iノード:152694リンク:1
アクセス:(0664 / -rw-rw-r--)Uid:(1001 /アーロン)Gid:(1001 /アーロン)
アクセス:2012-08-21 11:05:52.890021630 +0200
変更:2012-08-21 11:06:31.606023626 +0200
変更:2012-08-21 11:06:31.638023629 +0200
 誕生:-

$猫テスト
テスト

$統計テスト
  ファイル: `test '
  サイズ:5ブロック:8 IOブロック:4096通常ファイル
デバイス:803h / 2051d iノード:152694リンク:1
アクセス:(0664 / -rw-rw-r--)Uid:(1001 /アーロン)Gid:(1001 /アーロン)
アクセス:2012-08-21 11:06:44.662024298 +0200
変更:2012-08-21 11:06:31.606023626 +0200
変更:2012-08-21 11:06:31.638023629 +0200
 誕生:-

$猫テスト
テスト

$統計テスト
  ファイル: `test '
  サイズ:5ブロック:8 IOブロック:4096通常ファイル
デバイス:803h / 2051d iノード:152694リンク:1
アクセス:(0664 / -rw-rw-r--)Uid:(1001 /アーロン)Gid:(1001 /アーロン)
アクセス:2012-08-21 11:06:44.662024298 +0200
変更:2012-08-21 11:06:31.606023626 +0200
変更:2012-08-21 11:06:31.638023629 +0200
 誕生:-

回答:


44

http://en.wikipedia.org/wiki/Stat_(system_call)

atimeの批判

ファイルへの書き込みはmtimeとctimeを変更し、ファイルの読み取りはatimeを変更します。その結果、POSIX準拠のシステムでは、ファイルを読み取ると書き込みが発生しますが、これは批判されています。この動作は通常、/ etc / fstabにマウントオプションを追加することで無効にできます。

ただし、atime更新をオフにすると、POSIX準拠、一部のアプリケーション、特にmuttメールリーダー(一部の構成)、および一部のファイル使用状況監視ユーティリティ、特にtmpwatchが破損します。最悪の場合、atimeを更新しないと、一部のバックアッププログラムがファイルのバックアップに失敗する可能性があります。

Linuxカーネル開発者のIngoMolnárは、atimeを「おそらく最も馬鹿げたUnixデザインのアイデア」と呼び、「[T]これについて少し考えてください。「ディスクから読み取られるすべてのファイルについて、...そして、すでにキャッシュされており、キャッシュから読み取るすべてのファイルに対して...ディスクへの書き込みを行います!」彼はさらに、パフォーマンスへの影響を次のように強調しました。

Atimeアップデートは、Linuxが今日持っているIOパフォーマンスの最大の欠陥です。atimeの更新を取り除くと、過去10年間のすべてのページキャッシュの高速化を合わせたよりも、毎日の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.
....

特定のパーティションがどのようにマウントされたのか、そしてcatが予想どおりアクセス時間を更新しないのはこれが理由です。



これは、atimeがさまざまなマウントオプションによってどのように影響を受けるかについての古い議論です。linux.koolsolutions.com/2009/01/30/...
nelaaro
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.