Чому сортування файлів за часом доступу не працює?


12

Я намагався використовувати команду ls --time=atime

вона працювала в одному каталозі, але не працювала в іншому каталозі. Я відкрив певні файли у vim, evince та інших програмах, але після того, як час доступу до командного файлу час доступу не змінювався.

Під час введення touch file.txtчас доступу змінюється, але при введенні vim file.txtчас доступу не змінюється.

Що тут не так?


Яку ОС ти працюєш? Багато сучасних дистрибутивів Linux вимикають atime; у останніх ядрах Linux вимкнено за замовчуванням.
Жил "ТАК - перестань бути злим"

Я запускаю Ubuntu 10.04.
xralf

Що ви робите після бігу vim file.txt? Ви кинете vim від :qабо :wq? Якщо ви не пишете, vimне змінює час доступу до файлу - це за задумом.
rozcietrzewiacz

Тепер у мене в файлі менше файлів, а час доступу змінюється vim, і мені не потрібно редагувати файл, але коли я відкриваю файл із .jpgрозширенням, він не змінюється. Коли я відкриваю його в засобі перегляду зображень, це теж не змінюється. Мені потрібно змінювати час доступу щоразу, коли файл читався якоюсь програмою.
xralf

Відповіді:


14

За допомогою параметрів кріплення за замовчуванням у Linux використовується час доступу спеціальним чином:

relatime- кріплення файлової системи з цією опцією призводить до оновлення часу доступу, якщо вони (до того, як оновлення відбулося) раніше, ніж час модифікації. Це значно скорочує записи, викликані оновленнями atime.

Параметр relatimemount був зроблений за замовчуванням, оскільки ядро Linux 2.6.30. Це причина ls --time=atimeтого, що ви не перераховуєте те, що очікуєте.

Рішення: Щоб використовувати строгі (застарілі) дії для atime, використовуйте параметрstrictatimemount (наприклад, в/etc/fstab).

Примітка. Щоб повністю відключити оновлення аніме, можна скористатися noatime.


Це допомогло. Дякую. Наскільки повільніше буде система strictatime?
xralf

оновлення atime є досить дорогими (один запланований доступ до диска для оновлення входів кожен раз, коли доступ до їх вмісту файлів). Зокрема, якщо задіяно багато невеликих файлів, оновлення atime може подвоїти завантаження диска. Здебільшого програми, що покладаються на час доступу, хочуть лише перевірити, чи atime> mtime чи ні. Отже, нова опція за замовчуванням relatimeзберігає сумісність для цих програм. Насправді, дуже мало програм досі покладаються на це, і це часто безпечно у використанні noatime.
Стефан Гіменез

Мені подобається ця strictatimeфункція, яку я пробую сьогодні, але якщо вона зробить систему повільною, я хотів би встановити strictatimeлише в певних каталогах, якщо це буде можливо.
xralf

1
На практиці це максимум на 1% або на 2% повільніше, можливо, до 5% на сервері з високим завантаженням диска. Ну, якщо ви дійсно піклуєтесь про продуктивність, можливо обмежити оновлення atime в певному каталозі, використовуючи спеціальний fs, змонтований за strictatimeдопомогою цього каталогу, як цей пункт монтажу.
Стефан Гіменес

2

Ви можете вимкнути запис часу доступу для деяких файлових систем (шукайте noatimeв /etc/fstab). Щоб перевірити це, ви можете спробувати touch -a file; ls -l --time=atime file, а потім повторити, touch -a file; ls -l --time=atime fileщоб побачити, чи зміниться він.

lsПоведінка пояснюється man ls: ls -l --time=atimeпоказує час доступу в дату / час стовпчика. Для сортування за цим ключем вам потрібно також скористатися --sort=time.

Якщо ви, "час не змінено", означає, що він показує той самий результат, або тому, що atime вимкнено для файлової системи (див. /etc/fstab), Або тому, що час доступу насправді такий же, як і час модифікації (досить звичайний).

Зауважте, що перелік файлів не змінює їх час доступу. До файлів не звертається lsлише кеш-код введення .


Коли я набираю ls -l --time=atimeчас, не змінюється (я припускаю, що стовпець з часом atime) і порядок сортування не змінюється, файли з останнім atime повинні бути на початку або в кінці списку (якщо вони були останніми доступними) ).
xralf

@xralf Ви повторили і те, touch і ls? Я відредагував відповідь, щоб зробити її більш очевидною.
rozcietrzewiacz

Коли я ввожу сенсорний файл.txt, час доступу змінюється, але коли я набираю vim file.txt, час доступу не змінюється.
xralf

1

Також може бути корисним при такому тестуванні додати --full-timeпрапор, щоб lsви могли бачити секунди та підсекунди, щоб ви могли бачити ефект, не обмежуючись хвилинними межами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.