लिनक्स के लिए SysInternals FileMon के बराबर?


13

मैं उबंटू पर एक एप्लिकेशन को डीबग करने का प्रयास कर रहा हूं - मुझे खुले प्रयासों (यहां तक ​​कि मौजूद न होने वाली फ़ाइलों के लिए भी) को सुनने की आवश्यकता है।

प्रक्रिया मॉनिटर (पूर्व में FileMon के रूप में जाना जाता है ) विंडोज पर उपलब्ध है - उबंटू की उपयोगिता बेल्ट पर क्या है?

धन्यवाद!

एशले

जवाबों:


7

आप स्ट्रेस की तलाश में हैं। यहां देखें: https://wiki.ubuntu.com/Strace


2
जैसा कि मैं इसे समझता हूं, चल रहा है फाइल उपयोगकर्ता को सभी फ़ाइल एक्सेस देखने की अनुमति देता है। दूसरी ओर स्ट्रेस, आपको यह निर्दिष्ट करने की आवश्यकता है कि कौन सा ऐप पहले खोलना है। इसके लिए आपको पहले से पता होना चाहिए, वह ऐप जो उन फाइलों को एक्सेस कर रहा है। क्या होगा यदि आप नहीं जानते कि कौन सी ऐप उन फ़ाइलों तक पहुंच रही है जिन्हें आप देखने में रुचि रखते हैं?
चुअक्व

8

आपको क्या चाहिए इस पर यह निर्भर है:

  • बड़े में, आप सभी फ़ाइल एक्सेस को देखने के लिए inotify पर देखना चाहते हैं जो कि कोई भी प्रक्रिया बनाती है।

  • छोटे में, स्ट्रेस आपको सिसकल्स को देखने की एक विशेष प्रक्रिया बनाती है। स्ट्रेस काफी कमाल का है। strace -f -eopen $cmdउदाहरण के लिए, आप किसी प्रक्रिया के कॉल को 'ओपन' कर सकते हैं । आदमी पेज निश्चित रूप से वाक्य रचना पर पूरी जानकारी, है।


धन्यवाद pjz बहुत विशिष्ट होने के लिए - मुझे उबंटू पर ओग्रे 3 डी के साथ शुरू होने में कुछ परेशानी हो रही है। मेरा परीक्षण अनुप्रयोग स्टार्ट-अप के दौरान कुछ .cfg फ़ाइलों की तलाश में लगता है। मैं फ़ाइलों को खोलने के सभी प्रयासों को सुनना चाहता हूं ताकि मैं यह सुनिश्चित कर सकूं कि सही फाइलें उपलब्ध हैं और सही अनुमति है।
चिकनिनबिस्किट

स्ट्रेस -इ ओपन ।/app
जस्टिन

2

straceएक शुरुआती एप्लिकेशन के सामने यह देखना अच्छा है कि ऐप क्या कर रहा है।
lsofयह देखना अच्छा है कि कौन सी फाइल पहले से चल रहे ऐप का उपयोग कर रही है।

BTW:
lsof -ni:22 दिखाता है कि कौन सी प्रक्रिया पोर्ट 22 का उपयोग कर रही है।


2

SGI में एक उपकरण है जिसे आप आज़माना चाहते हैं: http://oss.sgi.com/projects/fam/


2
अकाल के तहत इतिहास इतिहास है। वास्तव में आजकल inotify का उपयोग करें
ThorstenS

1

फ़ाइल परिवर्तनों को ट्रैक करने के लिए स्ट्रेस का उपयोग करने का एक उदाहरण यहां दिया गया है:

strace -f -e trace=file -p7546 -o /tmp/outputfile

-fयह सुनिश्चित करता है कि बाल प्रक्रियाओं से घटनाओं पर कब्जा कर लिया गया है।
-e trace=file(उदाहरण के लिए कहते हैं कि हम फ़ाइल से संबंधित syscalls पर कब्जा करना चाहिए stat, open, futexआदि)
-pप्रक्रिया ID (से लिया गया है ps -auxया अन्य साधनों) -ooutputfile निर्दिष्ट (वहाँ काफी मात्रा में डेटा हो सकता है और आप के बजाय एक फिल्टर के रूप ग्रेप इस्तेमाल कर सकते हैं।




0

यह पुराना है, लेकिन मुझे लगता है कि आज की वास्तविकता के लिए इसे अपडेट करने के लिए यह एक अच्छा विचार है।

डिबग सिर्फ एक प्रक्रिया और उनके बच्चों के लिए, स्ट्रेस अभी भी सबसे अच्छा तरीका है। यह लापता फाइलों पर भी आसानी से सभी फ़ाइल acess दिखा सकता है।

जेनेरिक सिस्टम डिबग के लिए, कर्नेल में ऑडिट सुविधा ऐसा कर सकती है और अनुशंसित तरीका है। यह हाल के गुठली पर किसी भी पैच की जरूरत नहीं है, बस ऑडिट पैक स्थापित है

यहाँ इसका उपयोग करने के लिए एक सरल गुई है:

लेखा परीक्षा-जीयूआई

यह सभी स्थानों, प्रक्रिया, आदि के लिए फ़ाइल acess की निगरानी करने के लिए, windows filemon को दोहराता है

इस पोस्ट को भी देखें


0

मेरे लिए यह अच्छा काम कर रहा है (लिनक्स मिंट 19.1):

sudo lsof 2>&1 | grep programnamehere

निश्चित नहीं है कि 2>&1इसकी आवश्यकता क्यों थी, लेकिन जब तक मैंने इसका उपयोग नहीं किया, यह फ़िल्टर नहीं हुआ।

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