Preciso me preocupar com “cauda: tipo de sistema de arquivos não reconhecido 0xbeefdead”?

32

Estou tentando seguir um arquivo de texto regular com tail -f -n 50 filename. Eu recebo as informações do arquivo muito bem, exceto que sempre recebo esta mensagem de erro:

cauda: tipo de sistema de arquivos não reconhecido 0xbeefdead

Isso acontece em todos os arquivos. O que 0xbeefdeadme preocupa - parece uma tag de hacker.

$ tail --version
tail (GNU coreutils) 8.4
kwknowles
fonte
3
Não deveria ser 0xdeadbeef? :P
devnull
1
Voto fechado retirado.
slm
1
Provavelmente óbvio, mas 0xDEADBEEF é frequentemente usado para indicar bytes não inicializados e coisas assim. O BEEFDEAD é provavelmente uma reviravolta inteligente nisso. pt.wikipedia.org/wiki/Hexspeak (procure deadbeef)
user426724
@ goldilocks: É uma boa história, mas não há dúvida. Além disso, corrija a tecla Caps Lock.
Ben Voigt
3
@BenVoigt Caps trava de lado, ele fez um argumento válido. A pergunta é perfeitamente clara: ele está apenas perguntando se sua carne é normal.
Navin

Respostas:

34

Se você receber esse aviso ao usar o sistema de arquivos StorNext e estiver executando a coreutilsversão 8.21 ou anterior, não há muito com que se preocupar; esta mensagem de aviso é esperada.

O GNU tailpossui um conhecimento profundo sobre vários tipos de sistemas de arquivos e avisa quando encontra um tipo desconhecido. O suporte para o sistema de arquivos StorNext foi adicionado tailem coreutilsem abril de 2013, e foi lançado em coreutils8,22. O commit está aqui . Se você não consegue obter essa versão coreutilsou deseja editar e recompilar o código-fonte, aqui está o diff desse commit:

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 */
Mark Plotnick
fonte
11
Por que um programa como o espaço do usuário tailprecisa ser compatível com um sistema de arquivos específico? Acho que o que quero dizer é que não existe uma abstração do sistema de arquivos em que possa confiar?
15
@ illuminÉ, a principal razão para determinar o tipo de sistema de arquivos é a operação "tail -f": a maneira mais eficiente de descobrir se novos dados foram gravados em um arquivo varia de um sistema para outro.
Mark
9
tailcom a -fopção usa inotifyse puder. Mas inotifysó pode monitorar as alterações causadas pela atividade realizada pelo kernel do sistema local. Portanto, tailserá usado inotifyapenas se o argumento do arquivo estiver no que classifica como um sistema de arquivos "local".
Mark Plotnick
7
E a última informação que falta é que o kernel não dá nenhuma indicação clara de que algo está errado quando você tenta usar o inotify em um sistema de arquivos que não o suporta, então esse número mágico kludgefest é basicamente a única maneira segura de usá-lo.