लिनक्स में वर्तमान में लोड की गई साझा वस्तुओं को कैसे देखें?


34

मेरे पास दो प्रश्न हैं, संबंधित प्रश्न:

  • यदि साझा पुस्तकालय वर्तमान में लोड किया गया है तो मैं कैसे देख सकता हूं? (यानी सिस्टम-वाइड, प्रक्रिया अज्ञेय)
  • मैं एक प्रक्रिया द्वारा लोड किए गए सभी साझा पुस्तकालयों को कैसे देख सकता हूं?

जवाबों:


40

आप दोनों के साथ कर सकते हैं lsof। लाइब्रेरी को खोलने या मैप करने के लिए किन प्रक्रियाओं को देखना है:

lsof /path/to/lib.so

और यह देखने के लिए कि क्या फ़ाइलें (साझा पुस्तकालयों सहित) एक प्रक्रिया खुली और / या मैप की गई है, करें:

lsof -p <pid>

22

/proc/PID/mapsफ़ाइल में देखकर किसी प्रक्रिया में क्या लोड होता है, यह देखने का दूसरा तरीका है । यह आपके पता स्थान में मैप की गई सभी चीजों को दिखाता है, जिसमें साझा की गई वस्तुओं को भी शामिल किया गया है।


मेरे एम्बेडेड एआरएम प्लेटफॉर्म पर ठीक काम किया। जबकि बिजीबॉक्स कार्यान्वयन में lsofआवश्यक कार्यक्षमता नहीं थी।
एलेक्स चे

7
sudo grep libcairo.so /proc/*/maps

एक बार में /proc/PID/maps रिच द्वारा उल्लिखित सभी का पता लगाने का एक अच्छा तरीका है । नमूना उत्पादन:

/proc/8390/maps:7f0a9afae000-7f0a9b0bc000 r-xp 00000000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b0bc000-7f0a9b2bc000 ---p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b2bc000-7f0a9b2bf000 r--p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b2bf000-7f0a9b2c0000 rw-p 00111000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9afae000-7f0a9b0bc000 r-xp 00000000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b0bc000-7f0a9b2bc000 ---p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b2bc000-7f0a9b2bf000 r--p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b2bf000-7f0a9b2c0000 rw-p 00111000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6

आगे awkऔर बैश-फू उत्पादन को और भी परिष्कृत कर सकता है।

यह विधि उबंटू 18.04 के साथ हैक किए गए इस न्यूनतम सेटअप केdlopen साथ परीक्षण किए गए पुस्तकालयों को भी दिखाती है ।sleep(1000)


4

आप अगला कमांड रूट द्वारा चला सकते हैं और पूरी सूची देख सकते हैं,

cat /proc/*/maps | awk '{print $6;}' | grep '\.so' | sort | uniq

यह उन उपयोगकर्ताओं के लिए है जिनके पास lsof नहीं है।


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