मैं किसी प्रक्रिया के बाइनरी के लिए पथ कैसे निर्धारित करूं?


30

क्या निर्देशिका / डिस्क स्थान का पता लगाने का एक तरीका है जिससे एक प्रक्रिया शुरू की गई थी? मैं / proc माउंट से वाकिफ हूं, लेकिन वास्तव में इसके अंदर देखने के लिए नहीं।


1
क्या आपके पास द्विआधारी का स्थान है, या निर्देशिका है जिसमें से एक प्रक्रिया शुरू हुई?
लेकेनस्टीन

अस्पष्टता के लिए क्षमा करें, मेरा मतलब है बाइनरी
सुपरजुम्बो

जवाबों:


37

/procजिस तरह से निरीक्षण करने के लिए किया जाएगा exeनिर्देशिका पीआईडी के लिए इसी में लिंक।

चलो एक उदाहरण लेते हैं update-notifier:

इस उदाहरण में पीड को खोजें, जो 15421 है:

egil@gud:~$ ps x | grep update-notifier
 2405 pts/4    S+     0:00 grep update-notifier
15421 ?        Sl     0:00 update-notifier

प्रतीकात्मक लिंक देखें:

egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'

अरे हाँ, मैं लगभग वहाँ था। किंवदंती, धन्यवाद।
सुपरजुम्बो

15

हो सकता whichहै कि आप जो ढूंढ रहे हों। उदाहरण के लिए, मेरे सिस्टम पर

which firefox 

रिटर्न

/usr/bin/firefox

Solaris, Ubuntu, Suse या Redhat Linux पर चलने वाले एप्लिकेशन का पथ भी देखें ।


6
whichशांत है, लेकिन यह केवल आपके $ पैट में कार्यक्रम लौटाता है। अगर मैं दौड़ता हूं RandomProgramIDownloadedToErisKnowsWhere.bin, तो यह बहुत काम का नहीं होगा।
djeikyb

6

आपके पास उपलब्ध एक प्रक्रिया आईडी उपलब्ध है, आप इसका उपयोग कर सकते हैं:

readlink -f /proc/$pid/exe

( $pidएक प्रक्रिया की प्रक्रिया आईडी से बदलें )

यदि प्रक्रिया आपके स्वामित्व में नहीं है, तो आपको इसके sudoसामने रखना होगा।

कमांड का स्थान निर्धारित करने के लिए एक उदाहरण firefox:

  1. के उत्पादन ps ax -o pid,cmd | grep firefox:

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179 प्रक्रिया आईडी है, इसलिए आपको चलाना होगा:

    readlink -f /proc/28179/exe
    

    कौन से आउटपुट:

    /usr/bin/firefox
    

2
आप ठंडी चीजों के साथ कर सकते हैं /proc/$pid/exe, अगर बाइनरी गलती से नष्ट हो जाती है, तो आप इसके साथ इसे पुनर्स्थापित कर सकते हैं:dd if=/proc/$pid/exe of=restored-binary
लेकेनस्टेन

1

प्रेस Ctrl+ Alt+ Tएक टर्मिनल और प्रकार में जाने के लिए:

ls -al /proc/{pid}/fd  

और फिर आउटपुट की जांच करें

यह उन सभी फाइलों को सूचीबद्ध करेगा जिनकी प्रक्रिया आपके साथ जुड़ी हुई है ...


क्या आप मेरे संपादन की समीक्षा कर सकते हैं और भविष्य में आपके उत्तरों की पठनीयता को बेहतर बनाने के लिए संपादन मदद की भी समीक्षा कर सकते हैं ... ;-)
Fabby

0

अन्य उत्तरों में सभी कमांड अच्छे हैं, लेकिन आप इससे भी अधिक कर सकते हैं - यह देखने के लिए कि प्रक्रिया सूची में आने से पहले कुछ प्रक्रिया वास्तव में कैसे चलती है।

टर्मिनल में चलाएं:

top

और जब यह चल रहा है, तो कीबोर्ड दबाएं Cऔर आपको चलने वाली प्रक्रियाओं की एक कमांड मिलेगी।

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