Czy muszę się martwić o „tail: nierozpoznany typ systemu plików 0xbeefdead”?

32

Próbuję śledzić zwykły plik tekstowy z tail -f -n 50 filename. Dostaję informacje z pliku w porządku, tyle że zawsze pojawia się ten komunikat o błędzie:

tail: nierozpoznany typ systemu plików 0xbeefdead

Dzieje się tak na każdym pliku. 0xbeefdeadMartwi mnie - wygląda tagu hakerów.

$ tail --version
tail (GNU coreutils) 8.4
kwknowles
źródło
3
Czy nie powinno tak być 0xdeadbeef? :P
devnull
1
Zamknięte głosowanie wycofane.
slm
1
Prawdopodobnie oczywiste, ale 0xDEADBEEF jest często używany do wskazania niezainicjowanych bajtów i podobnych rzeczy. BEEFDEAD to prawdopodobnie sprytny zwrot akcji. pl.wikipedia.org/wiki/Hexspeak (szukaj deadbeef)
user426724
@Goldilocks: To ładna historia, ale nie ma wątpliwości. Napraw także klawisz Caps Lock.
Ben Voigt
3
@BenVoigt Caps zamknął się na bok, podał ważny punkt. Pytanie jest całkowicie jasne: pyta tylko, czy jego wołowina jest normalna.
Navin

Odpowiedzi:

34

Jeśli pojawia się to ostrzeżenie podczas korzystania z systemu plików StorNext i działa wersja coreutils8.21 lub wcześniejsza, nie ma się czym martwić; ten komunikat ostrzegawczy jest oczekiwany.

GNU tailma wbudowaną wiedzę o wielu typach systemów plików i ostrzega, gdy napotka nieznany typ. Wsparcie dla systemu plików StorNext dodano tailw coreutilsw kwietniu 2013 roku i został wydany w coreutils8,22. Zatwierdzenie jest tutaj . Jeśli nie możesz uzyskać tej wersji coreutilslub chcesz samodzielnie edytować i ponownie skompilować źródło, oto różnica od tego zatwierdzenia:

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
źródło
11
Dlaczego taki program przestrzeni użytkownika tailmusi być zgodny z określonym systemem plików? Myślę, że chodzi mi o to, czy nie ma abstrakcji systemu plików, na której mógłby polegać?
15
@ Illuminé, głównym powodem określania typu systemu plików jest operacja „tail-f”: najskuteczniejszy sposób sprawdzenia, czy nowe dane zostały zapisane w pliku, różni się w zależności od systemu plików.
Mark
9
tailz -fopcją używa inotifyjeśli to możliwe. Ale inotifymoże tylko monitorować zmiany spowodowane działaniami wykonywanymi przez jądro systemu lokalnego. Więc tailbędzie używać inotifytylko wtedy, gdy plik jest argumentem na to, co klasyfikuje jako „lokalne” plików.
Mark Plotnick
7
Ostatnią brakującą informacją jest to, że jądro nie daje wyraźnego wskazania, że ​​coś jest nie tak, gdy próbujesz użyć inotify w systemie plików, który go nie obsługuje, więc ta magiczna liczba kludgefest jest w zasadzie jedynym bezpiecznym sposobem jej użycia.