जवाबों:
प्रक्रिया के द्विआधारी स्थान प्राप्त करने का एक तरीका यह उपयोग करने के लिए है 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
।
उदाहरण: आप सहयोगी प्रक्रिया कमांड नाम के बाद PID 45109
...
> % ps awx | awk '$1 == 45109 { print $5 }'
> /Applications/Safari.app/Contents/MacOS/Safari
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 कमांड मिलना बंद कर देता है)
; exit
प्रिंट स्टेटमेंट के बाद जोड़ा , ताकि केवल पहलीtxt
प्रविष्टि को प्रिंट किया जा सके, भले ही कई बैश उदाहरण में हो।