Tại sao lsof phàn nàn về dấu vết?


11

Mỗi lần thực hiện các lsofvấn đề đều cảnh báo về TraceFS:

$ lsof any-file
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
      Output information may be incomplete.

$ mount | grep trace
tracefs on /sys/kernel/debug/tracing type tracefs (rw,relatime)

(Đây là trên Ubuntu 15.10, được cập nhật đầy đủ)

Có phải bình thường cho TraceFS được gắn kết trong khi hoạt động bình thường?
Nếu vậy, làm thế nào tôi có thể nói lsofđể bỏ qua nó?

Câu trả lời:


12

Câu trả lời cho câu hỏi của bạn nằm trong quyền truy cập tệp:

thử:

$ ls -l /sys/kernel/debug/tracing
ls: cannot access '/sys/kernel/debug/tracing': Permission denied
$ ls -l /sys/kernel
total 0
...
drwx------  31 root root    0 2016-06-15 11:06:47 debug
...

Vì vậy, người dùng bình thường không được phép truy cập /sys/kernel/debug/tracingvà dường như không có cách nào để yêu cầu lsoftránh truy cập nó.

Sau đó, chúng tôi có thể thảo luận xem đây có phải là một lỗi hay không, nhưng câu trả lời cho câu hỏi của bạn làm rõ vấn đề này.


"Lỗi" nghĩa là gì? "lsof" cần được thực thi bằng "sudo" hoặc "root".
Rinzwind

1
lsof không cần phải được chạy như root. Chúng ta có thể thảo luận về bảo mật của nó (xem man lsof) nhưng chắc chắn không cần phải chạy chỉ với các khoản trợ cấp siêu người dùng. Nó nằm trong / usr / bin không trong / usr / sbin.
EnzoR

"Không có cách nào để tránh nó" là một câu trả lời hoàn toàn chấp nhận được. Ngoài ra, có vẻ như TraceFS không còn được gắn kết theo mặc định kể từ Ubuntu 16.04; cảnh báo khi chạy lsofnhư một người dùng bình thường giờ đã biến mất.
Zilk

3
Tôi vào ngày 16.04, nó vẫn chưa biến mất - vẫn là một vấn đề.
TenLeftFingers

@TenLeftFingers Nó hoạt động trong bản cập nhật Kubfox 16.04 của tôi!
EnzoR

3

Tôi đã có cùng một vấn đề và câu trả lời này đã giúp tôi hiểu vấn đề tốt hơn một chút.

Tôi đã phát hiện ra rằng một cách để loại bỏ cảnh báo gây phiền nhiễu là gỡ lỗi gỡ lỗi

mount | grep debugfs 
none on /sys/kernel/debug type debugfs (rw,_netdev)

sudo umount $(mount | grep debugfs | awk '{print $3}')

Nếu bạn chạy bây giờ lsofkhông có cảnh báo.


2
đây thực sự là lý do tại sao tôi đến tìm kiếm Tôi không quan tâm lắm tại sao lỗi lại xuất hiện. Tôi thực sự chỉ muốn nó đi xa. Cảm ơn damko!
cjac

umount: /sys/kernel/debug: target is busy.
mseach

2

Vấn đề là bạn không có quyền truy cập vào thư mục debugfs. Thư mục theo dõi được tạo để cho phép mọi người gắn thư mục theo dõi trực tiếp tại / sys / kernel / theo dõi và không yêu cầu bật gỡ lỗi. Nhưng để tương thích ngược, khi gắn thư mục debugfs, nó sẽ tự động gắn dấu vết trong thư mục "theo dõi" của debugfs.

Bây giờ khi bạn thực hiện lsof, nó sẽ xem tệp / Proc / filesystems cũng như / Proc / mounts. Nó thấy rằng dấu vết được gắn tại / sys / kernel / debug / trace, và do đó cố gắng thống kê nó. Thật không may, vì / sys / kernel / debug không cho phép người dùng không phải root nhìn thấy bên trong nó, bạn nhận được thông báo lỗi khi cố gắng thống kê thư mục "theo dõi" từ bên trong / sys / kernel / debug. Nếu bạn ngắt kết nối thư mục debugfs, cảnh báo sẽ biến mất.


0

Cảnh báo được viết cho stderr. Bạn luôn có thể chuyển hướng này đến / dev / null:

lsof <any-file> 2>/dev/null

Chúc mừng

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.