सवाल मैं चल रहे प्रक्रिया के पूर्ण पथ को कैसे जान सकता हूं?


यदि मेरे पास डिस्क पर एक ही एप्लिकेशन की कई प्रतियां हैं, और केवल एक ही चल रहा है, जैसा कि मैं देख सकता हूं ps, मैं कैसे जान सकता हूँ पूर्ण दूसरों से अलग करने के लिए रास्ता?


80
2018-02-01 13:48


मूल




जवाब:


% sudo ls -l /proc/PID/exe

उदाहरण के लिए:

% ps -auxwe | grep 24466
रूट 24466 0.0 0.0 1476 280? एस 200 9 0:00 एसएसडीडी की निगरानी
% sudo ls -l / proc / 24466 / exe
lrwxrwxrwx 1 रूट रूट 0 फरवरी 1 18:05 / proc / 24466 / exe -> /package/admin/daemontools-0.76/command/supervise

93
2018-02-01 17:04



मेरे सिस्टम में (उबंटू 14.04) आपको चलाने के लिए सुपरसियर होने की आवश्यकता नहीं है ls आदेश। - jarno
@jarno ls: cannot read symbolic link /proc/28783/exe: Permission denied - यह दौड़ने के बारे में नहीं है ls कमांड, यह आपकी प्रक्रिया से संबंधित प्रक्रिया की प्रक्रिया जानकारी तक पहुंचने के बारे में है। मेरे बॉक्स पर, / proc में सूचीबद्ध सभी प्रक्रियाओं में से लगभग 97% रूट प्रक्रियाएं हैं, और अन्य 11 अलग-अलग उपयोगकर्ताओं को वितरित किए जाते हैं। - Irfy


उपयोग:

pwdx $pid

यह आपको पिड की वर्तमान कार्यशील निर्देशिका देता है, न कि इसका पूर्ण पथ।

आमतौर पर which आदेश आपको बताएगा कि खोल से कौन सा आह्वान किया जा रहा है:

#> which vlc
/usr/bin/vlc

13
2018-05-03 06:48



इस जवाब को और अधिक जरूरत है .. - Kokizzu
@ कोकिज़ू नहीं, ऐसा इसलिए नहीं है क्योंकि यह सवाल का जवाब नहीं देता है। कौन सा आदेश केवल आपको बताता है कि यदि आप कमांड निष्पादित करते हैं तो कौन सा बाइनरी चलाया जाएगा। सवाल यह था कि "कौन सा बाइनरी पहले से चल रहा है"। उदाहरण के लिए कल्पना करें कि आपके कंप्यूटर पर एक दर्जन jdks है। यदि आप चल रहे जावा प्रक्रिया के बारे में जानना चाहते हैं, जिसे जेडीके से लिया गया है, जो इससे आपकी सहायता नहीं करता है। यह केवल आपको बताएगा कि अगर आप इसे अभी निष्पादित करते हैं तो यह कौन सा जेडीके लिया जाएगा। स्वीकृत उत्तर भी सही है। - noamik
एक स्पष्ट तरीका यह जवाब गलत है: मेरी मशीन पर मैं अलग-अलग जेडीके संस्करणों और कुछ 32 बिट / 64 बिट्स के साथ प्रक्रिया चलाता हूं। यदि मैं प्रक्रिया के लिए सही jstack / jmap संस्करण की पहचान करना चाहता हूं तो ऊपर दिए गए उत्तर काम नहीं करेंगे जबकि स्वीकृत उत्तर होगा। - Daniel Da Cunha
@ कोकिज़ू यह केवल प्रश्न का उत्तर देता है, "प्रक्रिया की वर्तमान कार्यशील निर्देशिका क्या है $pid? "संपादित पोस्ट अभी भी सवाल का जवाब नहीं देता है। which केवल बताता है "अगर आदेश पथ पर है, तो यह क्या है?" - John Strood


एक तरीका ps -ef है


12
2018-02-01 13:58



एक विशिष्ट सेवा के लिए काम नहीं किया है, यह सिर्फ सापेक्ष पथ प्रदान करता है - Jader Dias
जिस प्रक्रिया के साथ शुरू किया गया था, उसके माध्यम से मुझे एक प्रक्रिया की पहचान करने में मदद मिली। - jpierson


ps auxwwwe

स्रोत:

https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output


5
2018-02-01 13:53



मेरे लिनक्स पर सभी पूर्ण योग्य पथ नहीं दिखाता है: "रूट 24466 0.0 0.0 1476 280? एस 200 0:00 एसएसडीडी की निगरानी" उदाहरण के लिए - akira
यह अन्य उत्तरों की तुलना में अधिक सटीक है ... शायद उतना उपयोगी नहीं है, लेकिन अधिक सही जवाब है। Upvoted। - John Hunt


त्वरित जवाब का उपयोग करना है ps विकल्प या के साथ /proc फाइल सिस्टम जानकारी। वो होगा आमतौर पर काम, लेकिन गारंटी नहीं है। आम तौर पर, कोई निश्चित, गारंटीकृत उत्तर नहीं होता है। उदाहरण के लिए, निष्पादन के दौरान निष्पादन फ़ाइल हटा दी जाती है, तो फ़ाइल के लिए कोई रास्ता नहीं है?

देख यूनिक्स अकसर किये गए सवाल थोड़ी अधिक जानकारी के लिए, खासकर प्रश्न 4.3 और 4.4।


2
2018-02-01 14:45





आप सभी को पीआईडी ​​जानने की उम्मीद क्यों है? यहां मानव-अनुकूल तरीका है:

pwdx `pgrep ###process_name###`

2
2018-04-27 23:28



सवाल बताता है "जैसा कि मैं देख सकता हूं ps", तो यह शायद पीआईडी ​​प्रदर्शित करेगा - Scz
आह ठीक है। मुझे अभी भी मेरे कई उपयोग मामलों में एक तेज़ एक लाइनर होने लगता है। - moodboom


आप उपयोग कर सकते हैं

readlink /proc/$(pgrep -x -U $(id -ur) APP_NAME)/exe

या

find /proc/$(pgrep -x -U $(id -ur) APP_NAME)/exe -printf "%l\n"

पूर्ण पथ प्राप्त करने के लिए। पीआईडी ​​प्रक्रिया है।


0
2018-03-05 11:35