Lsof ट्रेसफोर्स के बारे में शिकायत क्यों करता है?


11

lsofट्रेसएफएस के बारे में चेतावनी के मुद्दों का हर निष्पादन :

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

(यह Ubuntu 15.10 पर है, पूरी तरह से अद्यतन)

क्या सामान्य ऑपरेशन के दौरान ट्रेसएफएस को लगाया जाना सामान्य है?
यदि हां, तो मैं lsofइसे कैसे छोड़ सकता हूं ?

जवाबों:


12

आपके प्रश्न का उत्तर फ़ाइल अनुमतियों में है:

प्रयत्न:

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

इसलिए, सामान्य उपयोगकर्ताओं को एक्सेस करने की अनुमति नहीं है /sys/kernel/debug/tracingऔर lsofइसे एक्सेस करने से बचने के लिए पूछने का कोई तरीका नहीं लगता है।

हम फिर चर्चा कर सकते हैं कि यह एक बग है या नहीं, लेकिन आपके सवाल का जवाब इस पर उबलता है।


आपका क्या मतलब है "बग"? "lsof" को "sudo" या "root" के रूप में निष्पादित किया जाना चाहिए।
रिनविंड

1
lsof को रूट के रूप में चलाने की आवश्यकता नहीं है। हम इसकी सुरक्षा के बारे में चर्चा कर सकते हैं (आदमी को lsof देखें) लेकिन यह निश्चित रूप से केवल सुपरयूजर अनुदान के साथ चलाने की आवश्यकता नहीं है। यह / usr / bin में / usr / sbin में नहीं बैठता है।
EnzoR

"इससे बचने का कोई तरीका नहीं" पूरी तरह स्वीकार्य उत्तर है। इसके अलावा, ऐसा प्रतीत होता है कि TraceFS अब Ubuntu 16.04 के रूप में डिफ़ॉल्ट रूप से माउंट नहीं हो जाता है; lsofसामान्य उपयोगकर्ता के रूप में चलने पर चेतावनी अब गायब हो गई है।
ज़िल्क

3
मैं 16.04 पर हूं, यह गायब नहीं हुआ - अभी भी एक मुद्दा है।
TenLeftFingers

@TenLeftFingers यह मेरे अप-टू-डेट Kubuntu 16.04 में काम कर रहा है!
EnzoR

3

मुझे भी यही समस्या थी और इस जवाब से मुझे समस्या को थोड़ा बेहतर समझने में मदद मिली।

मुझे पता चला है कि कष्टप्रद चेतावनी को हटाने का एक तरीका डिमाउंटफ्स को umount करना है

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

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

यदि आप अब चलाते हैं lsofतो कोई चेतावनी नहीं है।


2
यह वास्तव में मैं क्यों देख रहा था। मुझे इतनी परवाह नहीं है कि त्रुटि क्यों दिखाई दे रही है। मैं वास्तव में बस इसे दूर जाना चाहता हूं। धन्यवाद दामको!
cjac

umount: /sys/kernel/debug: target is busy.
मिसेज़ेल

2

मुद्दा यह है कि आपके पास डीबगफ़ निर्देशिका को एक्सेस करने की अनुमति नहीं है। ट्रेसफुट्स निर्देशिका को लोगों को सीधे / sys / कर्नेल / ट्रेसिंग पर ट्रेसिंग निर्देशिका को माउंट करने की अनुमति देने के लिए बनाया गया था और इसके लिए ट्रूफ़्स को सक्षम करने की आवश्यकता नहीं थी। लेकिन पिछड़ी अनुकूलता के लिए, जब डिबगफ़ निर्देशिका को आगे बढ़ाया जाता है, तो यह डीबगफ़्स की "ट्रेसिंग" निर्देशिका में स्वचालित रूप से ट्रेसअप्स को माउंट कर देगा।

अब जब आप lsof करते हैं तो यह / proc / filesystems फ़ाइल के साथ-साथ / proc / mounts पर दिखता है। यह देखता है कि ट्रेसफोर्स को / sys / कर्नेल / डिबग / ट्रेसिंग पर लगाया जाता है, और इस प्रकार इसे स्टेट करने की कोशिश की जाती है। दुर्भाग्य से, क्योंकि / sys / कर्नेल / डिबग नॉन-रूट उपयोगकर्ताओं को इसके अंदर नहीं देखने देते हैं, आपको त्रुटि संदेश तब मिलता है जब निर्देशिका को "ट्रेसिंग" / sys / कर्नेल / डीबग से स्टेट करने का प्रयास करते हैं। यदि आप डीबगफ़ निर्देशिका को अनमाउंट करते हैं, तो चेतावनी चली जाएगी।


0

चेतावनी को stderr को लिखा जाता है। आप हमेशा इसे / dev / null में रीडायरेक्ट कर सकते हैं:

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

चीयर्स,

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.