[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по времени последней
Invis1ble
Всем привет. Есть пара вопросов к более опытным линуксоидам.
1. Чем отличается время модификации от времени изменения?
2. Пытаюсь получить время последней модификации/изменения директории так:
stat -c%y $src

Выдает почему-то 24 число, хотя я редактировал файлы из директории src сегодня. Почему так происходит? Как правильно получить время последнего изменения "содержимого" директории?



Спустя 7 минут, 8 секунд (27.03.2011 - 23:49) Trianon написал(а):
1. модификация - строгий эквивалент термину "изменение".


2. модификация каталога - это внесение изменений в каталог, а не в файлы в нем находящиеся.
Иными словами, запись в него новых имен. Или удаление имеющихся. Или переименование файлов.
Запись в уже существующий файл сам каталог вполне может и не затронуть.

Спустя 6 минут, 25 секунд (27.03.2011 - 23:56) Invis1ble написал(а):
Trianon
Цитата
модификация - строгий эквивалент термину "изменение"

вот и я так подумал, но почему-то в "мануале" (--help) к stat написано:
Цитата
  %y  Время последней модификации
  %Y  Время последней модификации в секундах с начала Эпохи
  %z  Время последнего изменения
  %Z  Время последнего изменения в секундах с начала Эпохи

Цитата
модификация каталога - это внесение изменений в каталог, а не в файлы в нем находящиеся

однако, по непонятной мне причине иногда при редактировании содержимого одного из файлов время последней модификации директории изменяется также...
И все-таки вопрос остался без ответа:
Цитата
Как правильно получить время последнего изменения "содержимого" директории?

Спустя 10 минут, 3 секунды (28.03.2011 - 00:06) Trianon написал(а):
да никак.
Нет такого объекта "содержимое каталога"
Есть куча объектов.
Соответственно, перебирайте их все, и определяйте максимальное из времен отдельных файлов. Может быть даже рекурсивно.

Спустя 1 минута, 23 секунды (28.03.2011 - 00:07) Invis1ble написал(а):
Trianon
ясно, спасибо

Спустя 9 минут, 42 секунды (28.03.2011 - 00:17) Trianon написал(а):
поправлюсь слегка.
термины время модификации и время изменения пошли от полей структуры stat
st_mtite и st_ctime - время модификации файла и время изменения файлового дескриптора (который в unix-системах еще называют i-node)
Выдержка из man по этому поводу:

Некоторые файловые системы Linux не реализуют все метки времени. Некоторые файловые системы позволяют обращаться к файлам так, что не происходит никаких изменений в поле st_atime. (См. 'noatime' в mount(8). Поле st_atime изменяется при доступе к файлу, например, при execve(2), mknod(2), pipe(2), utime(2) и read(2) (если прочитано больше нуля байтов). Другие функции, например, mmap(2), могут изменять, а могут и не изменять st_atime. Поле st_mtime изменяется при модификациях файла, например, при выполнении mknod(2), truncate(2), utime(2) и write(2) (если записано больше нуля байтов). Более того, поле st_mtime каталога изменяется при создании и удалении файлов в этом каталоге. Поле st_mtime не изменяется при изменении владельца, группы, количества жестких ссылок файла или режима доступа к нему. Поле st_ctime изменяется при записи или установке информации об inode (владельце, группе, количестве ссылок, режиме и т.д.).




Спустя 28 минут, 41 секунда (28.03.2011 - 00:46) Invis1ble написал(а):
Понятно, попозже изучу этот вопрос поподробней, сейчас к сожалению нет времени...


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.