Home

Page 32
Page 32
background image

чтобы отобразилось содержимое каталога, а это получает-

ся и есть операция доступа к каталогу, которая и меняет 

время atime. В процессе выяснения этого обстоятельства 

определил еще один интересный момент. Оказывается, 

время доступа atime меняется только в том случае, если 

оно меньше или равно времени mtime или ctime. Если 

время доступа меньше, то сколько бы я не нажимал на 

двойной таб - время доступа не менялось. Проверить этот 

момент очень просто. Командой touch -m меняю время 

модификации каталога на текущее и проверяю изменения:

touch -m timetest/
stat timetest/
Access: 2010-07-29 17:15:34.762968549 +0300
Modify: 2010-07-29 17:30:51.857519567 +0300
Change: 2010-07-29 17:30:51.854977549 +0300

Отмечаю, что снова изменился параметр ctime. Поэто-

му записываю себе еще одно предположение, что измене-

ние времени модификации файла автоматически изменя-

ет и время изменения атрибутов файла.

Теперь если снова выполнить двойной tab, то время до-

ступа изменится:

stat timetest/
dir1/ fi le3 fi le4 
stat timetest/
Access: 2010-07-29 17:31:17.410974316 +0300
Modify: 2010-07-29 17:30:51.857519567 +0300
Change: 2010-07-29 17:30:51.854977549 +0300

Также проверил, что команды ls, du меняют время до-

ступа, а команды cd и pwd нет. Что впрочем логично.

С временем доступа atime для файлов ситуация анало-

гичная. При выводе содержимого файла командами cat, 

less, tail изменяется время доступа, но опять таки только 

в том случае, если оно меньше или равно времени mtime 

или ctime.

Далее решил проверить как себя ведет изменение вре-

мени модификации - mtime. Здесь для меня все обошлось 

без сюрпризов. Для каталога время модификации меняет-

ся всякий раз, когда в каталоге создаются/удаляются/пере-

именовываются подкаталоги и файлы.

stat timetest/
Access: 2010-07-29 17:41:02.706976846 +0300
Modify: 2010-07-29 17:40:13.765539027 +0300
Change: 2010-07-29 17:40:13.762977529 +0300
rm timetest/fi le3
stat timetest/
Access: 2010-07-29 17:41:02.706976846 +0300
Modify: 2010-07-29 17:52:04.758977254 +0300
Change: 2010-07-29 17:52:04.758977254 +0300
mkdir timetest/dir2
stat timetest/
Access: 2010-07-29 17:41:02.706976846 +0300
Modify: 2010-07-29 17:52:33.238971947 +0300
Change: 2010-07-29 17:52:33.238971947 +0300
igor@adm-ubuntu:~$ rm -r timetest/dir2
igor@adm-ubuntu:~$ stat timetest/
Access: 2010-07-29 17:41:02.706976846 +0300
Modify: 2010-07-29 17:53:05.874971500 +0300
Change: 2010-07-29 17:53:05.874971500 +0300
touch timetest/fi le5
stat timetest/

Access: 2010-07-29 17:55:26.978977669 +0300
Modify: 2010-07-29 17:58:53.078971720 +0300
Change: 2010-07-29 17:58:53.078971720 +0300
mv timetest/fi le5 timetest/fi le6
stat timetest/
Access: 2010-07-29 17:55:26.978977669 +0300
Modify: 2010-07-29 17:59:40.314988184 +0300
Change: 2010-07-29 17:59:40.314988184 +0300

Также из примеров видно, что действительно при изме-

нении времени mtime автоматически изменяется и время 

ctime. В тоже время временной параметр atime каталога 

timetest не меняется от действия команд rm, mkdir, mv.

Для файла параметр mtime меняется при изменении 

содержимого файла. Открыв файл в редакторе nano, из-

менив содержимое и сохранив изменения увидел следую-

щую картину:

до изменения файла:

stat timetest/fi le7
Access: 2010-07-29 17:58:53.078971720 +0300
Modify: 2010-07-29 18:00:39.058974330 +0300
Change: 2010-07-29 18:27:06.246971667 +0300

после изменения и сохранения изменений:

stat timetest/fi le7
Access: 2010-07-29 18:29:22.666968437 +0300
Modify: 2010-07-29 18:29:28.798977680 +0300
Change: 2010-07-29 18:29:28.798977680 +0300

Обратите внимание, что в данной ситуации изменяются 

все временные параметры: atime - в момент открытия фай-

ла, mtime и ctime в момент сохранения изменений в файле. 

Кстати команда переименования файла mv не должна из-

менять временной параметр файла mtime. Дело в том, что 

в этом случае модифицируется только имя файла, которое 

хранится в inode-области, но не в самом файле. По логике 

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

раметр cname как раз и должен измениться. Но чего гадать 

- проверяю на практике:

stat timetest/fi le7
File: «timetest/fi le7»
Size:  8  Blocks:  8  IO  Block:  4096  обычный 
файл
Device: 804h/2052d Inode: 659938 Links: 1
Access:  (0644/-rw-r--r--)  Uid:  (  1000/ 
igor) Gid: ( 1000/ igor)
Access: 2010-07-29 18:34:20.438968510 +0300
Modify: 2010-07-29 18:34:24.438971636 +0300
Change: 2010-07-29 18:34:24.438971636 +0300
mv timetest/fi le7 timetest/fi le8
stat timetest/fi le8
File: «timetest/fi le8»
Size:  8  Blocks:  8  IO  Block:  4096  обычный 
файл
Device: 804h/2052d Inode: 659938 Links: 1
Access:  (0644/-rw-r--r--)  Uid:  (  1000/ 
igor) Gid: ( 1000/ igor)
Access: 2010-07-29 18:34:20.438968510 +0300
Modify: 2010-07-29 18:34:24.438971636 +0300
Change: 2010-07-29 18:40:28.914973652 +0300

Действительно изменился только параметр ctime. 

Здесь я привел вывод команды stat полностью, чтобы об-

ратить внимание на то, что при переименовании файла, 

U

ser

  

A

nd

LINUX

Other

ualinux.com

32

U & L  

1 1 - 0 1


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

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