Операционная система Linux отслеживает три метки времени для каждого файла в вашей системе. Эти отметки времени позволяют узнать, когда последний раз обновлялся файл. Но что все они означают? А как узнать это время для файла? Есть ли разница в каталогах?
Понимание atime, ctime и mtime может ответить на все эти вопросы. Это три отметки времени, которые отслеживают файловые системы Unix. Если вам когда-нибудь понадобится узнать подробности о том, что и когда изменилось, читайте дальше.
Что такое три метки времени Unix?
С каждым файлом связаны три отметки времени. Linux хранит их в Формат времени Unix который измеряет секунды с начала эпохи. Эти три отметки времени обычно называются atime, ctime и mtime.
В время является наиболее распространенным и часто наиболее полезным. Это означает измененное время. Это время последней записи содержимого файла на диск.
Немного отличается ctime что означает Время смены. Эта временная метка отслеживает изменения метаданных, такие как права собственности и разрешения. Он включает в себя переименование файла - по крайней мере, в типичных современных ОС Linux. Но он также обновляется при изменении содержимого файла, поэтому он всегда актуален, как и mtime.
Третья отметка времени - это время, в котором хранится время последнего обращения к файлу.
Как метки времени применяются к каталогам
Каталог Linux - это, по сути, список файлов в этом каталоге. Таким образом, создание файла внутри каталога обновит mtime этого каталога. Список файлов в каталоге с помощью ls команда, например, обновляет время доступа. И, как и в случае с файлом, изменение разрешений или имени каталога обновляет его ctime.
А как насчет времени создания?
Вы можете удивиться, узнав, что Linux просто не отслеживает время создания. Вы можете изначально предположить, что ctime означает время создания. Точно так же вы можете подумать об этом как о очень полезной вещи, которую нужно выяснить.
Многие приложения сохраняют файлы, каждый раз создавая их с нуля. Это могло бы ввести в заблуждение использование времени создания.
Как просмотреть разные отметки времени
Самый простой способ получить информацию о метке времени - использовать в ls команда. Длинный формат по умолчанию показывает детали для mtime:
$ дата
Сб 6 мар, 16:57:01 GMT 2021
$ echo "привет, мир"> tmp
$ ls -l tmp.txt
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp
Вместо этого вы можете отобразить время, используя -u флаг:
$ дата
Сб 6 мар 16:59:33 GMT 2021
$ cat tmp
Привет, мир
$ ls -lu tmp
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp
$ ls -l tmp
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp
Последняя строка подтверждает, что mtime этого файла отличается от atime. Наконец, используйте -c флаг для просмотра ctime:
$ дата
Сб 6 мар 17:02:34 GMT 2021
$ mv tmp tmp2
$ ls -lc tmp2
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 17:02 tmp2
$ ls -l tmp2
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp2
$ ls -lu tmp2
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp2
На этот раз мы подтверждаем, что все три раза разные и правильные: мы изменили, затем открыли, а затем изменили файл в указанном порядке.
Альтернативой ls является стат команда. Эта команда отображает низкоуровневую информацию из индексного дескриптора файла. Это упрощает проверку всех трех раз сразу. Это также позволяет обойти проблему неинтуитивного -u флаг. Вот пример вывода для того же файла:
$ stat tmp2
Файл: `tmp2 '
Размер: 13 Блоки: 8 Блок ввода-вывода: 4096 обычных файлов
Устройство: 801h / 2049d Inode: 327688 Ссылки: 1
Доступ: (0644 / -rw-r - r--) Uid: (1000 / ubuntu) Gid: (1000 / ubuntu)
Доступ: 2021-03-06 16: 59: 45.000000000 +0000
Изменить: 2021-03-06 16: 57: 59.000000000 +0000
Смена: 2021-03-06 17: 02: 43.000000000 +0000
Как обновить отметки времени
В трогать Команда изменяет время модификации и доступа к файлу. Это также удобный способ создания пустого файла, который он сделает, если файл еще не существует:
Touch tmp
По умолчанию он устанавливает mtime и atime на текущее время. Вы можете установить другое время с помощью -t флаг:
сенсорный -t 202103061200 tmp
Вы также можете установить только mtime или atime с помощью -м и -а флаги соответственно:
сенсорный -t 202103061300 -m tmp
Обратите внимание, что ctime всегда обновляется, когда мы устанавливаем atime или mtime.
Как найти файлы по отметкам времени
В найти команда - еще один инструмент, который работает с отметками времени. Он может фильтровать файлы по времени atime, ctime или mtime. Например:
найти. -амин 15
найдет файлы, к которым обращались ровно 15 минут назад, при этом:
найти. -mtime -2
найдет файлы, измененные за последние два дня.
Linux отслеживает каждый файл трижды
Метка времени файла, на которую чаще всего ссылаются, - это mtime. Например, это дата и время, которые отображаются в списке файлов. Но две другие отметки времени также могут быть полезны, если вы понимаете, о чем они говорят. В частности, всегда помните, что ctime представляет изменять время, а не творчество время.
Такие команды, как touch и stat, являются полезными членами набора инструментов командной строки Linux. Эти команды улучшат ваш рабочий процесс Linux, позволяя быстро создавать новые файлы.
Эта простая шпаргалка поможет вам быстро освоить терминал командной строки Linux.
- Linux
- Управление файлами
- Linux дистрибутив
Бобби - энтузиаст технологий, проработавший разработчиком программного обеспечения большую часть двух десятилетий. Он увлечен играми, работает редактором обзоров в Switch Player Magazine и занимается всеми аспектами онлайн-публикации и веб-разработки.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Еще один шаг…!
Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.