MacOS में PID से प्रक्रिया फ़ाइल नाम कैसे प्राप्त करें?


13

क्या पीआईडी ​​का उपयोग करके किसी प्रक्रिया का फ़ाइल नाम प्राप्त करना संभव है? पीएस एक प्रक्रिया के बारे में बहुत उपयोगी जानकारी प्रदर्शित करता है, लेकिन एक प्रक्रिया निष्पादन योग्य फ़ाइल स्थान के बारे में संकेत नहीं।

जवाबों:


13

प्रक्रिया के द्विआधारी स्थान प्राप्त करने का एक तरीका यह उपयोग करने के लिए है lsofऔर grepपहले के लिए txtखंड। उदाहरण के लिए, शेल में यह देखने के लिए कि शेल क्या बाइनरी है, शेल के पीआईडी ​​का उपयोग करें $$

$ lsof -p $$ | grep txt
bash    78228 blair  txt    REG   14,2   1244928   6568359 /bin/bash
bash    78228 blair  txt    REG   14,2   1059792  23699809 /usr/lib/dyld
bash    78228 blair  txt    REG   14,2 136368128  81751398 /private/var/db/dyld/dyld_shared_cache_i386

आप देख सकते हैं कि शेल उपयोग कर रहा है /bin/bash

यह तकनीक काम करती है यदि प्रक्रिया एक निरपेक्ष या रिश्तेदार पथ का उपयोग करके लॉन्च की गई थी। उदाहरण के लिए, एक खोल में जाकर दौड़ना

$ sleep 1234567

और psदूसरे शेल में उपयोग करने से पता चलता है कि इसे कैसे लॉन्च किया गया था:

$ ps auxww|grep '[s]leep'
blair    79462   0.0  0.0   600908    744 s011  S+   11:17PM   0:00.00 sleep 1234567

lsofयह दिखाते हुए कि यह किस बाइनरी का उपयोग करता है :

$ lsof -p 79462 | awk '$4 == "txt" { print $9 }'
/opt/local-development/bin/gsleep

मेरे पास MacPorts Coreutils + with_default_names स्थापित हैं, जो बताते हैं कि मैंने उठाया gsleepऔर नहीं /bin/sleep


Awk के माध्यम से पाइपिंग lsof आउटपुट एक छोटे से जोड़ के साथ शानदार काम करता है। मैंने ; exitप्रिंट स्टेटमेंट के बाद जोड़ा , ताकि केवल पहली txtप्रविष्टि को प्रिंट किया जा सके, भले ही कई बैश उदाहरण में हो।
20

2

उदाहरण: आप सहयोगी प्रक्रिया कमांड नाम के बाद PID 45109...

>    % ps awx | awk '$1 == 45109 { print $5 }'
>    /Applications/Safari.app/Contents/MacOS/Safari

2
पूर्ण बाइनरी पथ नहीं दिखाएगा यदि बाइनरी को केवल निर्दिष्ट पथ के बिना नाम से शुरू किया गया था।
ग्रिगोरीव्प

सही काम नहीं करता है, यदि पथ में
व्हॉट्सएप है


1

ps-grep के साथ मेरे लिए काम करता है। एक विशिष्ट फ़ाइल नाम के लिए, बस इस प्रकार grep के माध्यम से पाइप करें:

MacBook:~ Me$ ps -ef | grep Safari | grep -v grep
  501 15733   301   0   0:25.76 ??         1:58.24 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_4977855

(वह अंतिम 'grep -v grep' बस आपको आउटपुट में अपना grep कमांड मिलना बंद कर देता है)


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