Рождение пусто на ext4

ethtool предпочтительный инструмент здесь (дайте кредит Shadur), он сообщит, есть ли у Вас ссылка, и если Вы так или иначе получили полудуплексное соединение или некоторую другую неверную конфигурацию.

Если Вы ничего не видите в системных журналах или в выводе dmesg, затем Вы смогли увеличивать многословие отладки сетевого драйвера. Попытайтесь работать modinfo -p e1000 (замените "e1000" названием драйвера для Вашего NIC). Могла бы быть опция, которую можно дать modprobe (или вставить файл в/etc/modprobe.d/) увеличить многословие или отладочную информацию.

Кроме того, выполнение выезда tcpdump -i eth0 как корень (заменяют "eth0" Вашим сетевым устройством). Вы видите, какой трафик Вы получаете, даже с ненастроенным интерфейсом. Вы будете видеть материал как широковещательный трафик или многоадресный трафик и возможно попытка Вашей системы к DHCP.

88
08.10.2012, 06:48
5 ответов

Поле заполняется (см. ниже), только coreutils stat не отображает его. По-видимому, они - waiting1 для xstat() интерфейс.

патчи coreutils - август 2012 - TODO

статистика (1) и ls (1) поддержка в течение времени рождения. Зависящий от xstat () быть обеспеченным ядром

Можно получить время создания через debugfs:

debugfs -R 'stat <inode_number>' DEVICE

например, для моего /etc/profile который идет /dev/sda2 (см., Как узнать, какое устройство файл идет):

stat -c %i /etc/profile
398264
debugfs -R 'stat <398264>' /dev/sda2
debugfs 1.42.5 (29-Jul-2012)
Inode: 398264   Type: regular    Mode:  0644   Flags: 0x80000
Generation: 2058737571    Version: 0x00000000:00000001
User:     0   Group:     0   Size: 562
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 8
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x506b860b:19fa3c34 -- Wed Oct  3 02:25:47 2012
 atime: 0x50476677:dcd84978 -- Wed Sep  5 16:49:27 2012
 mtime: 0x506b860b:19fa3c34 -- Wed Oct  3 02:25:47 2012
crtime: 0x50476677:dcd84978 -- Wed Sep  5 16:49:27 2012
Size of extra inode fields: 28
EXTENTS:
(0):3308774

Поля времени, означающие:

  • ctime: время изменения файла.
  • atime: время доступа к файлу.
  • mtime: время изменения файла.
  • crtime: время создания файла.

Ответ 1 Linus на поток LKML

97
27.01.2020, 19:30
  • 1
    @Sparhawk: у Меня была эта проблема также с файлом /home/user/path/to/file потому что /home был на отдельном разделе. В этом случае, путь, предоставленный stat должен быть относительно /home. Пример: sudo debugfs -R 'stat user/path/to/file' /dev/sda2. Для избавлений от обработки пути мы можем обеспечить к stat inode число вместо пути: sudo debugfs -R "stat <$(stat -c %i /home/user/path/to/file)>" /dev/sda5 –  jpfleury 17.04.2014, 05:39
[1173411]Я объединил это в простую оболочку функции:[12183]Вы можете запустить ее с [12184]
34
27.01.2020, 19:30

Есть еще один случай, когда время рождения будет пустым/ноль/черточка: Размер Inode Ext4 должен быть не менее 256 байт, чтобы хранить время crtime . Проблема возникает, если вы изначально создали файловую систему меньше 512 МБ (размер Inode по умолчанию будет 128 байт, см. меню /etc/mke2fs.conf и mkfs.ext4).

stat -c '%n: %w' testfile
testfile: -  

и/или

stat -c '%n: %W' testfile
testfile: 0

Теперь проверьте inode файловой системы (достаточно ли он велик, чтобы хранить crtime?):

tune2fs -l $(df . --output=source | grep ^/) | grep "Inode size:"
Inode size:           128

Техническая информация: На странице Ext4 Disk Layout обратите внимание, что некоторые атрибуты таблиц inode находятся за пределами 0x80 (128).

5
27.01.2020, 19:30

Что бы это ни стоило, я чувствовал себя педантичным, поэтому написал оболочку bash вокруг stat, чтобы молча поддерживать crtime, используя debugfs для извлечения его из базовой файловой системы ext4, если она доступна. Я надеюсь, что он крепкий. Найти здесь.

Обратите внимание, что исправление якобы находится в списке задач для Linux, как задокументировано в этом скрипте. Таким образом, эта оболочка имеет номинальный срок службы только до тех пор, пока это не будет сделано, и является скорее упражнением в том, что выполнимо.

3
20.08.2021, 13:21

Начиная с версии 8.31 GNU coreutils,stat«теперь выводит время создания файла, если это поддерживается файловой системой, в системах GNU Linux с glibc >= 2.28 и ядром >= 4.11».

Моя ОС (Ubuntu 20.04, которая поставляется с ядром Linux 5.4.0 -28 и GLIBC 2.31 )поставляется только с GNU coreutils 8.30, поэтому мне пришлось проверить, скомпилировав версию 8.32 GNU coreutils из источника .

Выходls -l --time=birth --time-style=full-iso --no-group:

$ ls -l --time=birth --time-style=full-iso --no-group
total 13477610
-rwxr--r-- 1 systemd-coredump 13801071714 2017-06-30 04:53:33.211517792 -0400  file

Вывод statв файловой системе btrfs:

$ stat file
  File: /mnt/btrfs/file
  Size: 13801071714 Blocks: 26955224   IO Block: 4096   regular file
Device: 33h/51d Inode: 4998        Links: 1
Access: (0744/-rwxr--r--)  Uid: (  999/systemd-coredump)   Gid: (  999/systemd-coredump)
Access: 2020-05-04 12:21:51.640487614 -0400
Modify: 2016-01-19 10:32:19.272000000 -0500
Change: 2017-06-30 04:55:14.910839537 -0400
 Birth: 2017-06-30 04:53:33.211517792 -0400

(Как ни странно, я не смог показать время рождения в Arch Linux, используя фиктивную файловую систему ext4, несмотря на то, что она отвечала всем вышеперечисленным требованиям.)


СТАРЫЙ ОТВЕТ:

Что ж, начиная с версии 8.32 GNU coreutils(стабильной версии ), и stat, и lsиспользуют вызов statx.

lsпокажет время создания/рождения.

** New Features

ls now supports the --time=birth option to display and sort by
file creation time, where available.

И, вероятно, statтоже.

** Improvements

stat and ls now use the statx() system call where available, which can operate more efficiently by only retrieving requested attributes.

Это совершенно -новый дистрибутив, опубликованный только 5 марта 2020 года, поэтому может потребоваться некоторое время, чтобы просочиться вниз, если только вы не используете кровоточащий -крайний дистрибутив, такой как Arch Linux. (Arch Linux получил версию 8.32 -1 пакета coreutils 1 апреля 2020 г. ).

7
20.08.2021, 13:21

Теги

Похожие вопросы