Home

Page 31
Page 31
background image

ВРЕМЕННЫЕ ПАРАМЕТРЫ 

ФАЙЛА - ATIME, MTIME, CTIME

Сегодня я решил уточнить значения параметров mtime, 

atime и ctime, которые присутствуют у каждого файла 

вLinux. На первый взгляд все вроде понятно:

mtime - modifi cation time

 - время последней моди-

фикации (изменения) файла,

  atime  -  access  time 

- время последнего доступа к файлу, 

ctime  -  change 

time

 - время последнего изменения атрибутов файла 

(данных, которые хранятся в inode-области)

Но когда начинаешь спрашивать себя, когда меняются 

эти параметры, в частности, какие команды меняют их, а 

какие нет, и проверять на практике ответы на свои же во-

просы - все не так очевидно. Особенно для каталогов, ко-

торые тоже являются разновидностью файлов в Linux. Вот 

решил поделится некоторыми экспериментами в этом на-

правлении. Эксперименты проводил конечно же в своей 

Ubuntu 9.10 c файловой системой ext4. У ext4, кстати поя-

вилось два дополнительных временных параметра - время 

создания файла linux и время удаления файла linux, но о 

них в самом конце.

До начала своих экспериментов я предполагал следую-

щее. 

Параметр mtime - изменяется после того, как изменяет-

ся содержимое файла. Например, открыли файл командой 

nano, дописали что-то, сохранили, закрыли и время mtime 

поменялось. А как в случае с каталогами? Предположи-

тельно, время модификации для каталога изменяется ког-

да в каталоге создаются/удаляются файлы и подкаталоги.

Параметр atime - изменяется тогда, когда мы получаем 

доступ к файлу, например, той же командой nano. Значит, 

atime должен измениться. Команды cat, less, tail выводят 

содержимое файла, значит мы получаем доступ к нему, но 

не меняем его поэтому mtime меняться не должен. А как 

быть с каталогами? Когда меняется atime для каталога? Тут 

я даже не знал, что себе ответить.

Параметр ctime - самый простой для моего понимания. 

Изменяется тогда, когда изменяются права доступа к фай-

лу (командой chmod), изменяется владелец файла (коман-

да chown), создаются жесткие ссылки на файл (команда ln). 

В этом плане различий с каталогом нет, с той лишь разни-

цей, что на каталоги нельзя создавать жесткие ссылки.

Вот примерно так я понимал значение временных 

параметров файлов. Практические эксперименты не-

сколько расширили и изменили мои познания. Во время 
экспериментов проверку 

в

ременных параметров про-

верял командой stat, которая показывает сразу все три 

временных атрибута. Если использовать команду ls, то по 

умолчанию она выводит время mtime - ls -l. ls -lu (или ls –

time=atime|access|use) - выводит время atime - время по-

следнего доступа к файлу. ls -lc (или ls –time=ctime|status) 

- выводит время ctime - время последнего изменения 

атрибутов.

Начал с параметра atime. Создаю в домашнем каталоге, 

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

дой stat (вывод результата сокращаю для экономии места):

mkdir timetest
stat timetest
Access: 2010-07-29 16:08:53.330974403 +0300
Modify: 2010-07-29 16:08:53.330974403 +0300
Change: 2010-07-29 16:08:53.330974403 +0300

Сейчас все временные метку равны друг другу, так и 

должно быть. Далее захожу в каталог timetest и создаю 

пустой файл test, после чего проверяю временные метки 

каталога:

t

ouch ./timetest/test

stat timetest
Access: 2010-07-29 16:08:53.330974403 +0300
Modify: 2010-07-29 16:34:24.442971906 +0300
Change: 2010-07-29 16:34:24.442971906 +0300

и файла:

stat timetest/test
Access: 2010-07-29 16:34:24.442971906 +0300
Modify: 2010-07-29 16:34:24.442971906 +0300
Change: 2010-07-29 16:34:24.442971906 +0300

После создания файла в каталоге, ожидаемо изменил-

ся параметр каталога atime и неожиданно параметр ctime. 

Что ж возьму себе на заметку: при создании файла в ката-

логе, у каталога изменяются временные параметры atime 

и ctime. 

При создании подкаталога ситуация аналогичная. По-

пробую теперь удалить файл test и посмотреть как это по-

влияет на параметры каталога:

stat timetest/
Access: 2010-07-29 16:35:14.554977285 +0300
Modify: 2010-07-29 16:54:09.082973370 +0300
Change: 2010-07-29 16:54:09.082973370 +0300
rm timetest/test
stat timetest/
Access: 2010-07-29 16:56:07.634977694 +0300
Modify: 2010-07-29 16:56:13.386972802 +0300
Change: 2010-07-29 16:56:13.386972802 +0300

Интересный результат. Время доступа к каталогу изме-

нилось, но на 6 секунд раньше, чем время mtime и ctime. 

Значит команда удаления файла не могла изменить это 

время. А что тогда? Проведя еще пару экспериментов дога-

дался — это двойной tab который показывает содержимое 

каталога. То есть я набрал в консоли rm ti, затем нажал tab, 

чтобы дополнить до timetest, и затем нажал двойной tab, 

U

ser

  

A

nd

LINUX

Other

ualinux.com

31

U & L  

1 1 - 0 1


Copyright © 2021 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.