Почему cat не меняет время доступа?

Почему cat не меняет время доступа?

Второй вызов cat файла не обновляет время доступа. Я ожидал, что время доступа будет обновляться каждый раз, когда отображается содержимое файла.

Я вижу то же самое поведение, если открываю файл в веб-браузере. Его время доступа не обновляется последовательно.

Я неправильно понимаю время доступа? В чем разница между двумя кошачьими криками?

$ сенсорный тест
$ стат тест
  Файл: `test'
  Размер: 0 Блоки: 0 Блок ввода-вывода: 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'
  Размер: 5 Блоки: 8 Блок ввода-вывода: 4096 обычный файл
Устройство: 803h/2051d Inode: 152694 Ссылки: 1
Доступ: (0664/-rw-rw-r--) Uid: (1001/ aaron) Gid: (1001/ aaron)
Доступ: 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 Блок ввода-вывода: 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
 Рождение: -

$ тест кота
тест

$ стат тест
  Файл: `test'
  Размер: 5 Блоки: 8 Блок ввода-вывода: 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
 Рождение: -

решение1

http://en.wikipedia.org/wiki/Stat_(системный_вызов)

Критика времени

Запись в файл изменяет его mtime и ctime, а чтение файла изменяет его atime. В результате в POSIX-совместимой системе чтение файла приводит к записи, что подвергалось критике. Такое поведение обычно можно отключить, добавив опцию монтирования в /etc/fstab.

Однако отключение обновления atime нарушает соответствие POSIX, и некоторые приложения, в частности, почтовая программа mutt (в некоторых конфигурациях), и некоторые утилиты для отслеживания использования файлов, в частности, tmpwatch. В худшем случае, если не обновлять atime, некоторые программы резервного копирования не смогут создать резервную копию файла.

Разработчик ядра Linux Инго Молнар назвал atime «возможно, самой глупой идеей дизайна Unix всех времен», добавив: «[П]одумайте об этом немного: «Для каждого файла, который считывается с диска, давайте сделаем... запись на диск! И для каждого файла, который уже кэширован и который мы считываем из кэша... сделаем запись на диск!» Он далее подчеркнул влияние на производительность следующим образом:

Обновления atime — это, безусловно, самый большой недостаток производительности ввода-вывода, который есть у Linux сегодня. Избавление от обновлений atime дало бы нам больше повседневной производительности Linux, чем все ускорения pagecache за последние 10 лет,комбинированный.

как узнать, является ли 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 не обновляет время доступа, как я ожидал.

Связанный контент