Чи перейменування впливає на зміну файлу чи час його доступу? Чи є десь список того, що змінюється в які часи?
Чи перейменування впливає на зміну файлу чи час його доступу? Чи є десь список того, що змінюється в які часи?
Відповіді:
Перейменування оновлює час зміни:
$ mkdir tmp
$ cd tmp
$ echo abc > a
$ stat a
File: `a'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 26h/38d Inode: 5038682 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000 / zelda Gid: ( 1000/ zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:06:58.981107444 +0100
Birth: -
$ mv a b
$ stat b
File: `b'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 26h/38d Inode: 5038682 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ zelda) Gid: ( 1000/ zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:07:14.893238472 +0100
Birth: -
Час доступу оновлюється під час читання вмісту файлу. Змініть, коли ви фактично оновлюєте файл (відкриття для модифікації недостатньо, щоб змінити час зміни).
cp
і mv
та vi
для редагування. Інші редактори або ваш робочий стіл можуть вирішувати завдання по-різному, і оновити більше часових позначок.
mv
Модифікація, що впливає на mtime файлу, - це зміна даних файлу: запис ненульової кількості байтів або усікання, що закінчується модифікацією файлу. Створення файлу також встановлює його mtime на поточну дату. Просто відкриття файлу для запису не впливає на mtime, якщо припустити, що файл не створений або усічений.
Читання з файлу (якщо читається ненульова кількість байтів) або виконання файлу встановлює його atime на поточний час. Просто відкриття файлу для читання ніколи не впливає на час. У Linux це тепер відключено за замовчуванням у більшості випадків; atime
кріплення опція відновлює ATIME поновлення, в той час як noatime
параметр монтування відключає їх повністю.
Програми можуть змінювати mtime та atime файлу; основна команда для цього - це touch
. Деякі програми копіювання файлів встановлюють копію на той самий час, що й оригінал, наприклад, cp -p
абоrsync -t
.
Зміна, що впливає на ctime файлу, - це зміна метаданих файлу: дозволи, власник, час, кількість посилань тощо. Перейменування файлу також оновлює його ctime. Зміни файлових даних також впливають на ctime, але читання з файлу не змінює ctime, навіть якщо воно змінює atime. Неможливо змінити ctime будь-яким іншим способом, ніж встановити його на поточний час (навіть корінь обмежений, але root може побічно встановити ctime, спочатку змінивши системний час або безпосередньо звернувшись до розділу, що містить файлову систему).
Додаткове емпіричне спостереження, яке не згадується в інших відповідях:
Відкриття файлу для запису з O_TRUNC
зміною mtime, навіть якщо файл спочатку був порожнім.
Це, мабуть, так, принаймні, на ext3 в Linux 3.10.