Найти тему
takoedelo

Понимание временных меток файлов Linux: mtime, ctime и atime

Оглавление

Операционная система Linux отслеживает три временные метки для каждого файла в вашей системе. Эти временные метки позволяют узнать, когда файл обновлялся в последний раз. Но что все они означают? И как вы узнаете это время для файла? Есть ли разница, когда дело доходит до каталогов?

Понимание atime, ctime и mtime может ответить на все эти вопросы. Это три временные метки, которые отслеживают файловые системы Unix. Если вам когда-нибудь понадобится узнать подробности о том, что изменилось и когда, читайте дальше.

Каковы три временные метки Unix?

Каждый файл имеет три временных метки, связанные с ним. Linux хранит их в формате времени Unix, который измеряет секунды с момента эпохи. Эти три временных метки обычно называются atime, ctime и mtime.

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

Немного отличается ctime, который обозначает время изменения. Эта временная метка отслеживает изменения метаданных, такие как права собственности и разрешения. Это включает в себя переименование файла — по крайней мере, в типичных современных ОС Linux. Но он также обновляется при изменении содержимого файла, поэтому он всегда так же актуален, как и mtime.

Третья метка времени - это atime, которая хранит время последнего доступа к файлу.

Как временные метки применяются к каталогам

Каталог Linux - это, по сути, список файлов в этом каталоге. Таким образом, создание файла внутри каталога обновит mtime этого каталога. Например, перечисление файлов в каталоге с помощью команды ls обновляет время доступа. И, как и в случае с файлом, изменение разрешений или имени каталога обновляет его ctime.

Как насчет времени создания?

Возможно, вас удивит, что Linux просто не отслеживает время создания. Изначально можно предположить, что ctime означает время создания. Точно так же вы можете подумать об этом как об очень полезной вещи, которую можно узнать.

Многие приложения сохраняют файлы, создавая их с нуля каждый раз. Это сделало бы использование времени создания вводящим в заблуждение.

Как просмотреть различные временные метки

Самый простой способ получить информацию о временных метках - это команда ls. Длинный формат по умолчанию показывает детали для mtime:

-2

Вместо этого вы можете отобразить atime с помощью флага -u:

-3

Последняя строка подтверждает, что mtime этого файла отличается от atime. Наконец, используйте флаг -c для просмотра ctime:

-4

Все три раза различны и правильны: мы изменили, затем получили доступ, затем изменили файл в этом порядке.

Альтернативой ls является команда stat . Эта команда отображает низкоуровневые сведения из индекса файла. Это облегчает проверку всех трех одновременно. Он также решает проблему не интуитивного флага -u. Вот пример вывода для одного и того же файла:

-5

Как обновить временные метки

Команда touch изменяет время модификации и доступа к файлу. Это также удобный способ создания пустого файла, который он будет делать, если файл еще не существует:

-6

По умолчанию он установит mtime и atime на текущее время. Вы можете установить другое время с помощью флага -t:

-7

Обратите внимание, что ctime всегда обновляется, когда мы устанавливаем atime или mtime.

Как найти файлы по временным меткам

Команда find - это еще один инструмент, который действует на временные метки. Он может фильтровать файлы на основе atime, ctime или mtime. Например:

-8

найдет файлы, к которым обращался ровно 15 минут назад, в то время как:

-9

найдет файлы, измененные в течение последних двух дней.

Linux отслеживает каждый файл три раза

Наиболее часто используемая временная метка файла - mtime . Например, это дата и время, отображаемые в списке файлов. Но две другие временные метки также могут быть полезны, если вы понимаете, на что они ссылаются. В частности, всегда помните, что ctime представляет время изменения, а не время создания.

Такие команды, как touch и stat, являются полезными членами набора инструментов командной строки Linux. Эти команды улучшат рабочий процесс Linux, позволяя быстро создавать новые файлы.