मुझे कैसे पता चलेगा कि जब मैं कोई एप्लिकेशन खोलता हूं तो क्या फाइलें निष्पादित होती हैं?


12

मैं जानना चाहता हूं कि जब मैं कुछ एप्लिकेशन खोलता हूं तो स्क्रीन के पीछे क्या होता है। उदाहरण के लिए, जब मैं फ़ायरफ़ॉक्स खोलता हूं, तो मैं जानना चाहता हूं कि कौन सी फाइलें पढ़ी जाती हैं और कौन सी निष्पादित होती हैं। क्या इसे करने का कोई तरीका है। यहां तक ​​कि टर्मिनल से फ़ायरफ़ॉक्स खोलने से कोई जानकारी नहीं मिलती है। OS: उबंटू 12.04

जवाबों:


21

का उपयोग करें strace!

उदाहरण: एक सत्र के दौरान फ़ायरफ़ॉक्स द्वारा खोली गई सभी फ़ाइलों को सूचीबद्ध करें:

strace -f firefox 2>&1 | grep 'open('

अगर आप फायरफॉक्स का दूसरा उदाहरण खोलते हैं तो परिणाम कुछ इस तरह से होता है: http://pastebin.com/iRqxgiWN ('-f' विकल्प सिर्फ स्ट्रेस फॉलो प्रक्रिया कांटे बनाता है।)

उदाहरण 2: फायरफॉक्स द्वारा निष्पादित सभी प्रक्रियाओं को सूचीबद्ध करें:

strace -f firefox 2>&1 | grep -P 'exec[vlpe]*\('

YouTube पर आने पर कुछ इस तरह से परिणाम:

[pid 25020] execve("/usr/lib/firefox/plugin-container", ["/usr/lib/firefox/plugin-containe"..., "/usr/lib/adobe-flashplugin/libfl"..., "-greomni", "/usr/lib/firefox/omni.ja", "-appomni", "/usr/lib/firefox/browser/omni.ja", "-appdir", "/usr/lib/firefox/browser", "15198", "false", "plugin"], [/* 57 vars */]) = 0
[pid 25024] execve("/bin/sh", ["sh", "-c", "ps x | grep netscape"], [/* 57 vars */]) = 0
[pid 25025] execve("/bin/ps", ["ps", "x"], [/* 57 vars */] <unfinished ...>
[pid 25026] execve("/bin/grep", ["grep", "netscape"], [/* 57 vars */]) = 0

आप कई अन्य सिस्टम कॉल के साथ भी ऐसा कर सकते हैं ...

open()अपनी grepखोज के मापदंडों का मिलान करके आप यह भी पता लगा सकते हैं कि फाइल किस मोड में खोली गई है:

बस | grep -P 'O_RDONLY|O_RDWR'पढ़ें (अग्रणी पाइप चरित्र महत्वपूर्ण है!) पढ़ने का उपयोग फ़िल्टर करने के | grep -P 'O_WRONLY|O_RDWR'लिए या अपने आदेश तक पहुँच लिखने के लिए ...

संपादित करें :

जैसा कि टिप्पणियों में बताया गया था कि आप strace -fe open firefoxफायरफॉक्स द्वारा खोली गई सभी फाइलों को सूचीबद्ध करने के लिए भी उपयोग कर सकते हैं । आप फ़ायर्फ़ॉक्स द्वारा किए गए सभी फ़ाइल संचालन strace -fe trace=file firefoxको सूचीबद्ध करने के लिए भी उपयोग कर सकते हैं , जिसमें एक तर्क (खुले, स्टेट, स्टैट, चामोड, एक्सेस, ...) के रूप में एक फ़ाइल पथ है।

कई और उपलब्ध हैं! की जाँच करें strace (1) मैनुअल पृष्ठ।


1
मैं बल्कि हैरान हूं कि फ़ायरफ़ॉक्स प्रक्रिया सूची से "नेटस्केप" को खोलने के लिए एक शेल चलाएगा।
माइकल

1
स्ट्रेस में व्यापक अंतर्निहित फ़िल्टरिंग क्षमताएं हैं। उदाहरण के strace -e openलिए open(), केवल कॉल दिखाने की कोशिश करें ।
जॉन कूगेलमैन 18

@ मिचेल यह एक खोल को खोल देता है क्योंकि यह एक पाइप ("|") का उपयोग करता है जो शेल सिंटैक्स है। आप कोड से मैन्युअल रूप से एक ही पाइप सेट कर सकते हैं, लेकिन शेल को ऐसा करने के लिए बहुत आसान है - जब तक आप जानते हैं कि शेल से बचने के कोड का कोई मौका नहीं है उपयोगकर्ता से गुजरता है, जिससे सुरक्षा कमजोरियां हो सकती हैं।
एलिस्टेयर बुक्सटन

1

वास्तव में वहाँ क्रिया मोड के रूप में नामित मोड है, लेकिन मुझे यकीन नहीं है कि फ़ायरफ़ॉक्स में ऐसे विकल्प हैं। आम तौर पर ऐसा होता है। लेकिन कोई समस्या नहीं है, हर एप्लिकेशन में इसके log.so शामिल होंगे। आप इसके लॉग डेटा की जांच करके एप्लिकेशन गतिविधि की जांच कर सकते हैं।

यदि आप फ़ायरफ़ॉक्स के लिए लॉग को सक्षम करना चाहते हैं तो आप इसकी जांच कर सकते हैं

http://bertrandbenoit.blogspot.in/2011/09/activate-logging-for-mozilla.html

उबंटू में हर एप्लिकेशन गतिविधि आप उनके विशिष्ट लॉग इन के साथ जांच सकते हैं कि आवेदन /var/logनिर्देशिका में लॉग इन करेंगे ।

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