Метки времени в linux

Понимание временных меток файлов 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:

Читайте также:  Изменить файл через терминал linux

Источник

Временные метки файлов в Linux: atime, mtime, ctime. Разъяснения

Favorite

Добавить в избранное

Главное меню » Операционная система Linux » Временные метки файлов в Linux: atime, mtime, ctime. Разъяснения

Временные метки файлов в Linux: atime, mtime, ctime. Разъяснения

Д авайте посмотрим, каковы различные типы временных меток файлов в Linux, как просмотреть временные метки для файла и как изменить метки времени.

В Linux каждый файл имеет некоторые временные метки, которые предоставляют некоторые важные аналитики о том, когда файл или его атрибуты были модифицированы или изменены. Давайте посмотрим на эти временные метки в деталях.

Что такое метки времени Linux?

Любой файл в Linux обычно имеет три временных метки:

atime

atime означает время доступа. Эта временная метка сообщает вам, когда был последний раз обращались к файлу. При доступе это означает, что если вы использовали cat, vim, less или какой-либо другой инструмент для чтения или отображения содержимого файла.

mtime

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

ctime

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

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

Вы можете использовать команду stat для просмотра всех временных меток файла. Использование команды stat очень просто. Вам просто нужно указать имя файла.

stat andreyex.txt File: andreyex.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 10305h/66309d Inode: 11936465 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/andreyex) Gid: ( 1000/andreyex) Access: 2018-10-07 23:10:25.134647523 +0530 Modify: 2018-10-07 23:10:25.134647523 +0530 Change: 2018-10-07 23:10:25.134647523 +0530 Birth: -

Вы можете увидеть все три временных метки (доступ, модифицирование и изменение) в приведенном выше выводе. Все три временных метки здесь одинаковы, потому что мы просто создали этот пустой файл с командой touch.

Теперь давайте изменим эти временные метки.

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

$ less andreyex.txt $ stat andreyex.txt File: andreyex.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 10305h/66309d Inode: 11936465 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/andreyex) Gid: ( 1000/andreyex) Access: 2018-10-07 23:15:12.847568584 +0530 Modify: 2018-10-07 23:10:25.134647523 +0530 Change: 2018-10-07 23:10:25.134647523 +0530 Birth: -

Теперь давайте изменим время модификации. Мы будем использовать команду cat для добавления нового текста в этот файл. Это предотвратит изменение времени доступа.

$ cat >> andreyex.txt demo text ^C $ stat andreyex.txt File: andreyex.txt Size: 10 Blocks: 8 IO Block: 4096 regular file Device: 10305h/66309d Inode: 11936465 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/andreyex) Gid: ( 1000/andreyex) Access: 2018-10-07 23:15:12.847568584 +0530 Modify: 2018-10-07 12:32:34.751320967 +0530 Change: 2018-10-07 12:32:34.751320967 +0530 Birth: -

Вы заметили что-то странное? Вы изменили файл и ожидали изменения mtime, но также изменили время ctime.

Читайте также:  Linux hda intel hdmi

Запомните, ctime всегда изменяет mtime, это потому, что пока время изменения находится под контролем пользователя, ctime контролируется системой. Он представляет собой, когда в последний раз были изменены блоки данных или метаданные файла. Если вы изменяете файл, блоки данных изменяются и, следовательно, ctime изменяется.

Вы можете изменить ctime только путем изменения прав доступа к файлам, используя CHMOD или же командой chgrp, но вы не можете модифицировать mtime без изменения ctime.

Вы также не можете изменять ctime в прошлом обычными способами. Это своего рода функция безопасности, потому что она сообщает вам в последний раз, когда файл был изменен. Даже если кто-то изменяет mtime и устанавливает его в прошлом для злонамеренных целей, ctime укажет фактическое время, когда mtime было изменено.

Каково использование временных меток файлов?

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

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

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

Как узнать, когда был изначально создан файл?

Вы заметили последнюю строку вывода команды stat? В нем указывается «Birth». Вы можете догадаться, что это представляет собой timestmap, когда файл был «рожден» (или был создан, чтобы быть более точным).

Собственно, там является еще одна временная метка называется временем создания (cr). Не все файловые системы поддерживают эту метку времени. Ext4 — одна из популярных файловых систем Linux, и хотя она поддерживает временную метку создания, команда stat в настоящее время не может ее показать. Возможно, будущие версии команды stat покажут временную метку создания в разделе «Birth».

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Изменение метки времени файла в Linux — команда touch

Каждый файл в Linux ассоциирован с временной меткой, которая показывает время последнего доступа, последней модификации и последнего изменения.

Когда мы создаем новый файл или изменяем существующий или его атрибуты, эта временная метка автоматичекси изменяется

Touch — это команда которая используется для изменения временных меток (время доступа, время модификации и время изменения файла)

Читайте также:  Linux system error messages

Данную команду Вы вряд ли будете использовать часто, но в некоторых случаях она может оказаться очень полезной

Вы можете создать пустой файл используя команду touch. Представленный ниже пример создаст файл нулевой длины с именем grnd.txt

Вы также можете использовать опцию -с, чтобы избежать создания новых файлов. То бишь если мы используем ключ -c и файл с таким именем не существует, то команда touch не создаст этот файл.

Вы также можете создать более одного файла используя только одну команду touch. Пример показывает создание 4 файлов с именами ab de fj kl

Мы можем изменить метку о времени доступа к файлу используя ключ -a. По умолчанию установиться текущее системное время.

$ stat grnd.txt File: `grnd.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 3408768 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1001/ alexey) Gid: ( 4/ adm) Access: 2012-11-20 14:07:44.948481916 +0400 Modify: 2012-11-20 14:07:44.948481916 +0400 Change: 2012-11-20 14:07:44.948481916 +0400 Birth: -

После выполнения команды опять проверим состояние файла:

$ stat grnd.txt File: `grnd.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 3408768 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1001/ alexey) Gid: ( 4/ adm) Access: 2012-11-20 14:27:29.264508552 +0400 Modify: 2012-11-20 14:07:44.948481916 +0400 Change: 2012-11-20 14:27:29.264508552 +0400 Birth: -

3. Изменить метку временя модификации (Modify)

Данную команду можно использовать для изменения времени модификации всех объектных файлов, например для использования утилиты make.

Помимо того, что Вы можете изменить метки на текущее время, Вы также можете задать явные значение этих времен, то бишь то время, которое Вам необходимо. Для этого используются ключи -t и -d

YY – Показывает последние две цифры года. Если значение YY находится между 70 и 99, то значение СС принимается как 19. А если значение YY jn 00 до 37, то СС будет установлено как 20. Невозможно задать дату более 18 Января 2038 года.

$ touch -a -m -t 203710141103.24 grnd.txt

Проверим результат выполнения:

:~$ stat grnd.txt File: `grnd.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 3408768 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1001/ alexey) Gid: ( 4/ adm) Access: 2037-10-14 11:03:24.000000000 +0400 Modify: 2037-10-14 11:03:24.000000000 +0400 Change: 2012-11-20 15:08:04.992597671 +0400 Birth: -

Рассмотрим другой пример с более удобочитаемой записью даты:

$ touch -d "2012-10-20 13:13:13.000000000 +0400" grnd.txt

Команда touch будет очень полезна для разработчиков, особенно если работать с Makefiles

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

Источник

Оцените статью
Adblock
detector