Tôi có cần phải lo lắng về đuôi đuôi: hệ thống tệp không được nhận dạng loại 0xbeefdead không?


32

Tôi đang cố gắng theo dõi một tệp văn bản thông thường với tail -f -n 50 filename. Tôi nhận được thông tin từ tệp tốt, ngoại trừ tôi luôn nhận được thông báo lỗi này:

đuôi: hệ thống tập tin không được công nhận loại 0xbeefdead

Nó xảy ra trên mọi tập tin. Những 0xbeefdeadlo lắng cho tôi - nó trông giống như một thẻ hacker.

$ tail --version
tail (GNU coreutils) 8.4

3
Không nên 0xdeadbeefthay thế? :P
devnull

1
Đóng phiếu rút lại.
slm

1
Có thể rõ ràng nhưng 0xDEADBEEF thường được sử dụng để chỉ ra các byte chưa được khởi tạo và những thứ tương tự. BEEFDEAD có lẽ là một bước ngoặt thông minh về điều này. vi.wikipedia.org/wiki/Hexspeak (tìm kiếm deadbeef)
user426724

@goldilocks: Đó là một câu chuyện hay nhưng không có câu hỏi nào. Ngoài ra, sửa khóa mũ của bạn.
Ben Voigt

3
@BenVoigt Caps khóa sang một bên, anh ấy đã đưa ra một điểm hợp lệ. Câu hỏi hoàn toàn rõ ràng: Anh ta chỉ hỏi xem thịt bò của anh ta có bình thường không.
Navin

Câu trả lời:


34

Nếu bạn nhận được cảnh báo này khi sử dụng hệ thống tệp StorNext và đang chạy coreutils8.21 trở về trước, thì không có gì phải lo lắng; thông điệp cảnh báo này được mong đợi.

GNU tailcó kiến ​​thức chuyên sâu về một số loại hệ thống tập tin và cảnh báo khi nó gặp một loại không xác định. Hỗ trợ cho hệ thống tập tin StorNext đã được thêm vào tailtrong coreutilsvào tháng Tư năm 2013, và được phát hành trong coreutils8.22. Các cam kết là ở đây . Nếu bạn không thể có phiên bản đó coreutilshoặc muốn tự chỉnh sửa và biên dịch lại nguồn, thì đây là khác biệt từ cam kết đó:

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
Tại sao một chương trình không gian người dùng như tailcần phải tương thích với một hệ thống tập tin cụ thể? Tôi đoán những gì tôi muốn nói là, không có sự trừu tượng hóa hệ thống tập tin mà nó có thể dựa vào?

15
@ illuminÉ, lý do chính để xác định loại hệ thống tệp là hoạt động "tail -f": cách hiệu quả nhất để tìm hiểu xem dữ liệu mới đã được ghi vào một tệp khác nhau từ hệ thống tệp này sang hệ thống tệp khác.
Đánh dấu

9
tailvới -ftùy chọn sử dụng inotifynếu có thể. Nhưng inotifychỉ có thể theo dõi các thay đổi gây ra bởi hoạt động được thực hiện bởi kernel của hệ thống cục bộ. Vì vậy, tailsẽ inotifychỉ sử dụng nếu đối số tệp nằm trên hệ thống tệp "cục bộ".
Đánh dấu Plotnick

7
Và thông tin còn thiếu cuối cùng là hạt nhân không đưa ra dấu hiệu rõ ràng rằng có bất cứ điều gì sai khi bạn cố gắng sử dụng inotify trên một hệ thống tập tin không hỗ trợ nó, vì vậy, số ma thuật này về cơ bản là cách an toàn duy nhất để sử dụng nó.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.