Как посмотреть время создания файла linux

[ ls ] Как узнать время создания файла?

Я в ступоре. Мне нужно сделать простое действие — распечатать список файлов, чтобы рядом с именем файла показывалось время его создания.

Документация по ls написана для экстрасенсов, а я им не являюсь.

Re: [ ls ] Как узнать время создания файла?

Файловые системы не хранят время создания файла

есть mtime, atime, ctime

  • m — modify
  • a — access
  • c — change (metadata)

[ ls ] Как узнать время создания файла?

> Файловые системы не хранят время создания файла

Вот так сюрприз. Что, интересно, мешает хранить время создания?

[ ls ] Как узнать время создания файла?

>Что, интересно, мешает хранить время создания?

Re: [ ls ] Как узнать время создания файла?

Что, интересно, мешает хранить время создания?

А зачем? За последние 10 лет не припомню ни одного случая, когда бы это понадобилось.

Сегодня при наличии рабочего inotify можно вести отдельный лог создания фалов (IN_CREATE File/directory created in watched directory)

[ ls ] Как узнать время создания файла?

>А зачем? За последние 10 лет не припомню ни одного случая, когда бы это понадобилось.

Как только у нас чего нету мы говорим: «А зачем?». 🙂

[ ls ] Как узнать время создания файла?

Re: [ ls ] Как узнать время создания файла?

Как только у нас чего нету мы говорим: «А зачем?». 🙂

Может потому и нет, что незачем? Я потому и привел довод, что у меня за 10 лет админства не было такой потребности.

[ ls ] Как узнать время создания файла?

>Может потому и нет, что незачем? Я потому и привел довод, что у меня за 10 лет админства не было такой потребности.

Да это трололо было. ИМХО, ты прав, для меня так же creation time = modification time

[ ls ] Как узнать время создания файла?

Ну это естественное желание человека — знать когда файл или каталог был создан. Например, в каталоге /home ты бы мог узнать, когда какой пользователь был создан. Или по дате создания конфигурационного файла какого-нить сервиса узнать, стоял он уже в системе на какой-то момент или нет.

[ ls ] Как узнать время создания файла?

> А зачем? За последние 10 лет не припомню ни одного случая, когда бы это понадобилось.

А время модификации метаданных, хоть раз понадобилось? ИМХО, это еще более бесполезная вещь, чем время создания. И тем не менее оно есть.

Re: [ ls ] Как узнать время создания файла?

А время модификации метаданных, хоть раз понадобилось? ИМХО, это еще более бесполезная вещь, чем время создания. И тем не менее оно есть.

когда был сделан chmod/chown данному файлу весьма интересный вопрос

[ ls ] Как узнать время создания файла?

> когда был сделан chmod/chown данному файлу весьма интересный вопрос

А зачем? За несколько лет не припомню ни одного случая, когда бы это понадобилось.

Источник

Как я нахожу время создания файла?

Я должен найти время создания файла, когда я прочитал некоторые статьи об этой проблеме, все упомянули, что нет никакого решения (как Site1, Site2).

Читайте также:  Как завершить все установки windows

Когда я попробовал stat команда, указывает это Birth: — .

Таким образом, как я могу найти время создания файла?

5 ответов

Есть способ узнать дату создания каталога, просто выполните следующие действия:

Узнайте inode каталога с помощью ls -i команда (скажем, ее X )

Узнайте, на каком разделе сохранен ваш каталог, с помощью команды df -T / path (скажем, это на / dev / sda1 )

Теперь используйте эту команду: sudo debugfs -R ‘stat ‘ / dev / sda1

В выводе вы увидите:

crtime — дата создания вашего файла.

Что я тестировал :

  1. Создал каталог в определенное время.
  2. Получил доступ к нему.

Изменил его, создав файл.

Я попробовал команда, и она дала точное время.

  • Затем я изменяю ее и снова проверяю, crtime осталось прежним, но изменить и доступ время изменено.
  • @Nux нашел отличное решение для этого, которое вы все должны проголосовать. Я решил написать небольшую функцию, которую можно было бы использовать для прямого запуска всего. Просто добавьте это в свой

    Теперь вы можете запустить get_crtime , чтобы распечатать даты создания любого количества файлов или каталогов:

    TL; DR: Просто беги: sudo debugfs -R ‘stat / path / to / your / file’ / dev /

    (Чтобы определить вашу fs, запустите df -T / path / to / your / file , скорее всего, это будет / dev / sda1 ).

    Длинная версия:

    Мы собираемся запустить две команды:

    Узнать имя раздела для ваш файл.

    Вывод будет выглядеть следующим образом (сначала имя раздела):

    Узнать время создания этого файла.

    В выходных данных найдите ctime .

    Неспособность stat показать время создания связана с ограничением системного вызова stat (2) , структура возврата которого не включает поле для времени создания. Однако, начиная с Linux 4.11 (т.е. 17.10 и новее *), доступен новый системный вызов statx (2) , который включает время создания в его возвращаемую структуру.

    * И, возможно, в более старых версиях LTS, использующих ядра аппаратного стека (HWE). Проверьте uname -r , чтобы убедиться, что вы используете ядро ​​версии не ниже 4.11 для подтверждения.

    К сожалению, вызывать системные вызовы непосредственно в программе на языке C непросто. Обычно glibc предоставляет оболочку, которая упрощает работу, но glibc добавила оболочку только для statx (2) в августе 2018 г. (версия 2.28 , доступна в 18.10). Сама команда stat получила поддержку statx (2) только в GNU coreutils 8.31 (выпущена в марте 2019 г.) , однако даже только Ubuntu 20.04 имеет coreutils 8.30 .

    Но я не думаю, что это будет перенесено на выпуски LTS, даже если они получат или уже используют новые ядра или glibcs. Поэтому я не ожидаю, что stat в любой текущей версии LTS (16.04, 18.04 или 20.04) когда-либо напечатает время создания без ручного вмешательства.

    В 18.10 и новее, вы можете напрямую использовать функцию statx , как описано в man 2 statx (обратите внимание, что на странице руководства 18.10 неверно указано, что glibc еще не добавил оболочку).

    в Ubuntu 20.10 вы сможете использовать stat напрямую:

    К счастью, для старых систем @whotwagner написал пример программы на C , в которой показано, как использовать Системный вызов statx (2) в системах x86 и x86-64. Его вывод имеет тот же формат, что и stat по умолчанию, без каких-либо параметров форматирования, но его просто изменить, чтобы печатать только время рождения.

    Сначала клонируйте его:

    Вы можете скомпилировать код statx.c или, если вам просто нужно время рождения, создайте Birth.c в клонированном каталоге со следующим кодом (который является минимальной версией ] statx.c печатает только временную метку создания, включая точность наносекунды):

    Теоретически это должно сделать время создания более доступным:

    • должно поддерживаться больше файловых систем, чем только ext * ( debugfs — это инструмент для файловых систем ext2 / 3/4, который нельзя использовать в других)
    • вам не нужен root, чтобы использовать это (за исключением установки некоторых необходимых пакетов, таких как make и linux-libc-dev ).
    Читайте также:  Как обновить windows mobail

    Тестирование системы xfs, например:

    Однако это не сработало для NTFS и exfat. Я полагаю, что файловые системы FUSE для них не учитывали время создания.

    Источник

    Как узнать дату создания файла?

    Я пользуюсь Bash в Debian GNU/Linux 6.0. Можно ли получить дату/время создания файла? Не дата и время конфигурации. ls -lh a.txt и stat -c %y a.txt оба дают время модификации. Каждый файл имеет три разных связанных точны: время последнего доступ к данным, время (форма протекания физических и психических процессов, условие возможности изменения) последней модификации данных и время, когда файл статус изменен. Эти значения возвращаются в файле структура характеристик struct stat, как представлено в . Стандарт POSIX определяет только три отдельных временных метки для каждого файла: время заключительного доступа к данным, время последней модификации данных и время последнего изменения статуса файла. Тем не меньше, современные файловые системы Linux, такие как ext4, Btrfs и JFS, сохраняют время создания файла (вдобавок время рождения), но используют разные имена для данного поля ( crtime в ext4, otime в Btrfs и JFS). Хотя в настоящее время Linux не предоставляет API-интерфейс ядра для доступа к временам создания файла , простонар в поддерживающих их файловых системах.

    Используйте stap ( «SystemTap» ) для творения собственного API ядра. Ниже приведен пример извлечения времени создания ext4. Вы можете вытянуть время создания ext4 в системах Fedora 19. Вот мой:

    $ uname -a Linux steelers.net 3.11.1-200.fc19.i686.PAE #1 SMP Sat Sep 14 15:20:42 UTC 2013 i686 i686 i386 GNU/Linux

    Ясно, что inodes на моих ext4-разделах имеют время создания. Вот сценарий оболочки, который оприделяет индексный дескриптор, связанный с именем файла, а затем добавляет результат stat с порой создания, используя stap («systemtap»). NB: Это просто демо-версия и очень неэффективна, потому что модуль ядра создается, загружается и выгружается для каждого исполнения. Это также, вероятно, весьма хрупко, поскольку проверка ошибок не выполняется. Правильный API ядра предпочтительнее, но этот script можно сделать намного более эффективным и прочитать время создания нескольких файлов / inodes.

    В ext4 это может быть; потому что файловая система ext4 хранит время создания файла. Но все же вы обнаружите, что команда stat не сможет показать дату, это потому, что я думаю, что у ядра все еще нет API-интерфейсов. В любом случае время появления файла хранится в ext4 и вы можете найти его, хотя это не прямой метод, но используя debugfs

    sudo debugfs -R «stat / ABSOLUTE / PATH» / dev / sdxX | grep crtime

    Делать условие, если файл создали не позднее 2х недель. пока написал определение даты творения файла, но почему то выводит всегда одно и то же, хотя должны быть разные даты. образчик вывода: 01.01.1970 03:00:00

    echo date(«d.m.Y H:i:s.», filemtime($out_1));

    $filetime = filectime(«test.txt»);
    $time = microtime(true);
    $endtime = $time — $filetime;
    echo «Файл был сотворен $endtime секунд назад.»;

    Тут понадобилось на шлюзаке изменить дату создания файла 🙂 для чего не скажу , а как сделал читайте дальше ))) Для того что бы изменить дату файла на Freebsd (да и вобщем в Unix или Linux) нужно ввести след команду:

    touch -t 201208171310 file

    ВВ — век,ГГ — год, ММ — луна, ДД — день, чч — часы, мм — минуты, СС — секунды (если не задать секунды то там будет 0)

    Источник

    Есть ли способ узнать время создания файла в ubuntu?

    Я использую ubuntu и хочу знать время создания файла, даже когда он будет изменен или доступен ?

    7 ответов

    к сожалению Unix не хранят время создания файла.

    все, что вы можете получить с помощью stat is

    1. время последнего доступа
    2. время последней модификации
    3. время последнего изменения состояния
    Читайте также:  Версии скайпа для линукс

    Примечание: при использовании типа файловой системы в ext4 crtime доступно!

    ближайший доступный атрибут «время перемен», также известный как ctime . Это обновляется для различных системных вызовов, любые, которые изменяют индекс, а не данные, которые он содержит.

    ссылки

    этот маленький скрипт может получить дату создания для ext4:

    я назвал его fcrtime и положил его в мой . Поэтому в любой папке я могу использовать команду типа: fcrtime example.odp

    crtime: 0x5163e3f0:12d6c108 — Tue Apr 9 12:48:32 2013

    по сравнению с тем же файлом:

    Примечания

    1. realpath обычно не устанавливается по умолчанию. В Ubuntu например. установите его с sudo apt-get install realpath
    2. заменить /dev/sda4 при необходимости с тем, который вы получаете от mount|grep ext4

    согласно http://en.wikipedia.org/wiki/Comparison_of_file_systems, это доступно для файловых систем ext4, btfrs, FAT, NTFS и UDF, а также некоторых других, с которыми вы вряд ли столкнетесь. Он недоступен на ext2 или ext3, вероятно, наиболее распространенных форматах файловой системы в Ubuntu.

    вам понадобится патч ядра, хотя:http://lwn.net/Articles/394391/. По-видимому, это потому, что Линус отверг атрибут времени создания на том основании, что кто-то кто-то назвал его» отим», а кто-то другой — «бтим», и поэтому идея должна быть бесполезной.

    время создания, известно как file рождения времени и поддерживается в некоторой файловой системе, только с некоторыми ядрами. Команда будет Мохсен Pahlevanzadeh ответ:

    Примечание: этот вопрос является дубликатом Как найти дату создания файла?. Кроме того, обязательно прочитайте этот вопрос какие файловые системы в Linux хранят время создания?.

    Источник

    🐧 Как узнать дату последнего изменения файла на Linux

    Иногда вам может потребоваться проверить подробную информацию о файле (отметку времени), например дату его последнего изменения.

    Это может пригодиться, когда вы хотите проверить, когда этот файл последний раз редактировался.

    Кроме того, это гарантирует, что у вас установлена последняя версия файла.

    В этой статье вы узнаете 4 способа узнать дату последнего изменения файла в Linux.

    1. Использование команды stat

    Команда ls -l дает вам основную информацию о файле, такую как права собственности на файл и разрешения, размер файла и дата создания.

    Команда stat возвращает атрибуты файла с подробной информацией, например, когда последний раз открывался и изменялся файл.

    Синтаксис довольно простой.

    После stat следует имя файла или полный путь к этому файлу.

    Из вышеприведенного вывода мы можем ясно увидеть, когда к файлу в последний раз обращались (Дата доступа), Дату изменения, Дату изменения других параметров.

    Если вы хотите просмотреть только дату изменения и опустить всю остальную информацию, выполните следующую команду:

    2. Использование команды date

    Команда date в основном синтаксисе отображает текущую дату.

    Однако при использовании с параметром -r вы можете отобразить дату последней модификации файла, как показано далее:

    3. Использование команды ls -l

    Команда ls -l обычно используется для отображения дополнительной информации о файлах, например права собственности на файл и права доступа, размер и дата создания.

    Чтобы перечислить и отобразить время последнего изменения, используйте параметр lt, как показано далее.

    4. Использование httpie

    Другой способ проверить дату последнего изменения – использовать клиентский инструмент командной строки httpie.

    Инструмент обычно используется для взаимодействия с HTTP-серверами и API-интерфейсами, а также может проверять, когда последний раз был изменен файл, находящийся на веб-сервере.

    Но сначала вам нужно установить его с помощью команды:

    Ubuntu / Debian / Mint:

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

    Заключение

    На этом статья завершается.

    В этом руководстве мы описали различные способы, с помощью которых вы можете узнать дату последнего изменения файла в системе Linux и даже файла, размещенного на веб-сервере, с помощью инструмента httpie.

    Надеюсь, у вас не возникнет проблем с просмотром времени последнего изменения файлов.

    Источник

    Оцените статью