Нужно ли беспокоиться о «tail: нераспознанная файловая система типа 0xbeefdead»?


32

Я пытаюсь подписаться на обычный текстовый файл с tail -f -n 50 filename. Я получаю информацию из файла просто отлично, за исключением того, что я всегда получаю это сообщение об ошибке:

tail: нераспознанная файловая система типа 0xbeefdead

Это происходит с каждым файлом. 0xbeefdeadМеня беспокоит - это выглядит как хакер теге.

$ tail --version
tail (GNU coreutils) 8.4

3
Не должно ли быть 0xdeadbeefвместо этого? :P
devnull

1
Закрытое голосование отозвано.
SLM

1
Вероятно, очевидно, но 0xDEADBEEF часто используется для указания неинициализированных байтов и тому подобного. BEEFDEAD, вероятно, умный поворот в этом. en.wikipedia.org/wiki/Hexspeak (поиск deadbeef)
user426724

@goldilocks: Это хорошая история, но это не вопрос. Кроме того, исправьте свой ключ замка заглавных букв.
Бен Фойгт

3
@BenVoigt Caps Lock в сторону, он сделал правильное замечание. Вопрос совершенно ясен: он просто спрашивает, нормальна ли его говядина.
Навин

Ответы:


34

Если вы получаете это предупреждение при использовании файловой системы StorNext и работаете в версии coreutils8.21 или более ранней, беспокоиться не о чем; ожидается это предупреждающее сообщение.

GNU tailобладает знаниями о ряде типов файловых систем и предупреждает, когда встречается с неизвестным типом. Поддержка файловой системы StorNext была добавлена tailв coreutilsв апреле 2013 года , и была выпущена в coreutils8.22. Коммит здесь . Если вы не можете получить эту версию coreutilsили хотите отредактировать и перекомпилировать исходный код самостоятельно, вот разница из этого коммита:

src/stat.c
@@ -399,6 +399,8 @@ enum
     return "selinux";
   case S_MAGIC_SMB: /* 0x517B remote */
     return "smb";
+  case S_MAGIC_SNFS: /* 0xBEEFDEAD remote */
+    return "snfs";
   case S_MAGIC_SOCKFS: /* 0x534F434B local */
     return "sockfs";
   case S_MAGIC_SQUASHFS: /* 0x73717368 local */

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

15
@lightÉ, основной причиной определения типа файловой системы является операция «tail -f»: наиболее эффективный способ выяснить, записываются ли новые данные в файл, варьируется от одной файловой системы к другой.
Марка

9
tailс -fопцией использует, inotifyесли может. Но inotifyможет только отслеживать изменения, вызванные активностью ядра локальной системы. Таким образом, tailбудет использоваться, inotifyтолько если аргумент файла находится на том, что он классифицирует как «локальную» файловую систему.
Марк Плотник

7
И последняя недостающая часть информации заключается в том, что ядро ​​не дает четких указаний на то, что что-то не так, когда вы пытаетесь использовать inotify в файловой системе, которая его не поддерживает, так что это магическое число kludgefest, по сути, является единственным безопасным способом его использования.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.