Lsof neden izlerden şikayet ediyor?


11

lsofSorunların her yürütülmesi TraceFS hakkında bir uyarı verir:

$ 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)

(Bu Ubuntu 15.10'da, tamamen güncellenmiştir)

TraceFS'nin normal çalışma sırasında takılması normal midir?
Öyleyse, lsofatlamayı nasıl söyleyebilirim ?

Yanıtlar:


12

Sorunuzun cevabı dosya izinlerinde:

Deneyin:

$ 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
...

Bu nedenle, normal kullanıcıların erişmesine izin verilmez /sys/kernel/debug/tracingve lsoferişmekten kaçınmanın bir yolu yoktur .

Daha sonra bunun bir hata olup olmadığını tartışabiliriz, ancak sorunuzun cevabı bununla ilgilidir.


Ne demek "böcek"? "lsof" komutunun "sudo" ile veya "root" olarak yürütülmesi gerekir.
Rinzwind

1
lsof'un root olarak çalıştırılması gerekmez. Güvenliği hakkında konuşabiliriz (bkz. Adam lsof) ama kesinlikle sadece süper kullanıcı hibeleri ile çalıştırılması gerekmez. / Usr / sbin / usr / sbin içinde değil.
EnzoR

"Bundan kaçınmanın bir yolu yok" mükemmel kabul edilebilir bir cevaptır. Ayrıca, TraceFS'nin artık Ubuntu 16.04'ten itibaren varsayılan olarak bağlanmadığı anlaşılıyor; lsofnormal kullanıcı olarak çalışırken uyarı artık ortadan kalkmıştır.
Zilk

3
16.04'teyim, kaybolmadı - hala bir sorun.
TenLeftFingers

@TenLeftFingers Benim güncel Kubuntu 16.04'ümde çalışıyor!
EnzoR

3

Aynı problemim vardı ve bu cevap problemi biraz daha iyi anlamama yardımcı oldu.

Sinir bozucu uyarıyı kaldırmanın bir yolunun hata ayıklamalarını düzeltmek olduğunu öğrendim

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

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

Eğer şimdi koşarsanız lsofuyarı yoktur.


2
bu yüzden aramaya geldim. Hatanın neden ortaya çıktığı pek umurumda değil . Gerçekten gitmesini istiyorum. Teşekkürler damko!
cjac

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

2

Sorun, debugfs dizinine erişim izninizin olmamasıdır. Tracefs dizini, kişilerin izleme dizinini doğrudan / sys / kernel / tracing dizinine bağlamasına izin vermek ve hata ayıklamaların etkinleştirilmesini gerektirmeyecek şekilde oluşturulmuştur. Ancak geriye dönük uyumluluk için, debugfs dizinini monte ederken, tracefs'i debugfs'nin "tracing" dizinine otomatik olarak bağlar.

Şimdi lsof gerçekleştirdiğinizde / proc / dosya sistemleri ve / proc / mounts dosyalarına bakar. İzlerin / sys / kernel / debug / tracing dizinine bağlandığını görür ve bu nedenle bunu bildirmeye çalışır. Ne yazık ki, / sys / kernel / debug, root olmayan kullanıcıların içinde görmesine izin vermeyeceğinden, / sys / kernel / debug içinden "tracing" dizinini statüye almaya çalışırken hata mesajı alırsınız. Hata ayıklama dizinini çıkarırsanız uyarı kaybolur.


0

Uyarı stderr'e yazılır. Bunu her zaman / dev / null dizinine yönlendirebilirsiniz:

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

Alkış,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.