1

Я пытаюсь определить, как время доступа к файлу поддерживается по умолчанию в Mac OS X, так как я пытаюсь диагностировать какое-то странное поведение, которое я вижу в новом MBP Unibody (работает Snow Leopard, 10.6.2):

Симптомы (углубление в конкретное поведение, которое, кажется, вызывает проблему):

  • Mutt не может переключиться на почтовые ящики, которые недавно получили новую почту
  • почта доставляется procmail, которая обновляет mtime папки mbox, которую она обновляет, но не изменяет atime (так работает обнаружение новой почты: сравнивая atime с mtime)
  • однако, mtime и atime файла mbox обновляются

В ходе тестирования не выясняется, что atimes можно установить отдельно в файловой системе:

: [ether@tequila ~]$; touch test
: [ether@tequila ~]$; touch -m -t 200801010000 test2
: [ether@tequila ~]$; touch -a -t 200801010000 test3
: [ether@tequila ~]$; ls -l test*
-rw-------  1 ether  staff  0 Dec 30 11:42 test
-rw-------  1 ether  staff  0 Jan  1  2008 test2
-rw-------  1 ether  staff  0 Dec 30 11:43 test3
: [ether@tequila ~]$; ls -lu test*
-rw-------  1 ether  staff  0 Dec 30 11:42 test
-rw-------  1 ether  staff  0 Dec 30 11:43 test2
-rw-------  1 ether  staff  0 Dec 30 11:43 test3

Файл test2 создается со старым mtime , а atime устанавливается сейчас (так как это новый файл), что является правильным. Тем не менее, test3 создается со старым atime , но не правильно установлен в файле. Чтобы убедиться, что это не просто поведение, наблюдаемое с новыми файлами, давайте изменим старый файл:

: [ether@tequila ~]$; touch -a -t 200801010000 test
: [ether@tequila ~]$; ls -l test
-rw-------  1 ether  staff  0 Dec 30 11:42 test
: [ether@tequila ~]$; ls -lu test
-rw-------  1 ether  staff  0 Dec 30 11:45 test

Таким образом, может показаться, что atimes не может быть установлен явно (он всегда сбрасывается на "сейчас" при представлении модификаций mtime или atime ).

Это что-то присуще самой файловой системе, это что-то, что можно изменить, или я совершенно сумасшедший и смотрю не туда?

PS. вывод mount :

: [ether@tequila ~]$; mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)

... и Дисковая утилита сообщает, что диск имеет тип «Mac OS Extended (Journaled)».

1 ответ1

5

От man touch (на снежном барсе):

Change the modification time of the file.  The access time of the
file is not changed unless the -a flag is also specified.

Что еще более важно, это прекрасно работает для меня:

betelgeuse:tmp james$ touch test
betelgeuse:tmp james$ touch -m -t 200801010000 test2
betelgeuse:tmp james$ touch -a -t 200801010000 test3
betelgeuse:tmp james$ ls -lu test*
-rw-r--r--  1 james  wheel  0 31 Dec 07:41 test
-rw-r--r--  1 james  wheel  0 31 Dec 07:41 test2
-rw-r--r--  1 james  wheel  0  1 Jan  2008 test3
betelgeuse:tmp james$ ls -l test*
-rw-r--r--  1 james  wheel  0 31 Dec 07:41 test
-rw-r--r--  1 james  wheel  0  1 Jan  2008 test2
-rw-r--r--  1 james  wheel  0 31 Dec 07:41 test3
betelgeuse:tmp james$ 

С другой стороны, когда я пытаюсь сделать то же самое в ~, я получаю те же результаты, что и вы:

betelgeuse:~ james$ touch test
betelgeuse:~ james$ touch -m -t 200801010000 test2
betelgeuse:~ james$ touch -a -t 200801010000 test3
betelgeuse:~ james$ ls -lu test*
-rw-r--r--  1 james  staff  0 31 Dec 07:42 test
-rw-r--r--  1 james  staff  0 31 Dec 07:42 test2
-rw-r--r--  1 james  staff  0 31 Dec 07:42 test3

Различия? Прожектор не индексирует /tmp, но он индексирует ~. Я почти уверен, что то, что вы видите здесь, - это чтение файла, чтобы проиндексировать его после того, как вы изменили atime, который затем возвращает atime обратно.

Решение очень просто: просто добавьте каталоги, которые вы не хотите индексировать, в список папок Spotlight, которые не следует индексировать.

Просто чтобы подтвердить, что это так, я сделал новый каталог под названием "nospotlight" и велел Spotlight не индексировать его.

betelgeuse:nospotlight james$ ls -l *
-rw-r--r--  1 james  staff  0 31 Dec 07:47 test
-rw-r--r--  1 james  staff  0  1 Jan  2008 test2
-rw-r--r--  1 james  staff  0 31 Dec 07:47 test3
betelgeuse:nospotlight james$ ls -lu *
-rw-r--r--  1 james  staff  0 31 Dec 07:47 test
-rw-r--r--  1 james  staff  0 31 Dec 07:47 test2
-rw-r--r--  1 james  staff  0  1 Jan  2008 test3

Дайте Spotlight разрешение на его индексирование, и через несколько секунд:

betelgeuse:nospotlight james$ ls -lu *
-rw-r--r--  1 james  staff  0 31 Dec 07:48 test
-rw-r--r--  1 james  staff  0 31 Dec 07:48 test2
-rw-r--r--  1 james  staff  0 31 Dec 07:48 test3

и еще раз, изменение mtime приводит к обновлению atime.

Это определенно Прожектор.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .