जवाबों:
% sudo ls -l /proc/PID/exe
उदाहरण के लिए:
% ps -auxwe | grep 24466 रूट 24466 0.0 0.0 1476 280? एस 2009 0:00 पर्यवेक्षण sshd % sudo ls -l / proc / 24466 / exe lrwxrwxrwx 1 रूट रूट 0 फ़रवरी 1 18:05 / proc / 24466 / exe -> / package/admin/daemontools-0.76/command/supervise
ls: cannot read symbolic link /proc/28783/exe: Permission denied
- यह ls
कमांड चलाने के बारे में नहीं है , यह प्रक्रिया से संबंधित प्रक्रिया की जानकारी तक पहुँचने के बारे में है जो आपसे संबंधित नहीं है। मेरे बॉक्स में, / proc में सूचीबद्ध सभी प्रक्रियाओं का लगभग 97% रूट प्रोसेस हैं, और अन्य 11 अलग-अलग उपयोगकर्ताओं में वितरित किए गए हैं।
उपयोग:
pwdx $pid
यह आपको वर्तमान कार्य निर्देशिका प्रदान करता है, न कि इसका पूर्ण पथ।
आमतौर पर which
कमांड आपको बताएगा कि किस शेल से मंगवाया गया है:
#> which vlc
/usr/bin/vlc
$pid
?" संपादित पोस्ट अभी भी सवाल का जवाब नहीं देता है। which
केवल यह बताता है कि "यदि आज्ञा मार्ग पर है, तो यह क्या है?"
pwdx
मुझे redhat x64 6.3 पर pid पर निर्भर करते हुए प्रक्रिया के बाहरी प्रोग्राम का निरपेक्ष पथ लौटाएं।
एक तरीका ps -ef है
ps auxwwwe
स्रोत:
https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
त्वरित उत्तर ps
विकल्प या /proc
फाइल सिस्टम जानकारी के साथ उपयोग करना है । यह आमतौर पर काम करेगा , लेकिन इसकी गारंटी नहीं है। सामान्य तौर पर, कोई निश्चित, गारंटीकृत उत्तर नहीं है। उदाहरण के लिए, यदि निष्पादन के दौरान निष्पादन फ़ाइल हटा दी जाती है तो क्या होगा, ताकि फ़ाइल का कोई रास्ता न हो?
थोड़ा और अधिक विस्तार के लिए यूनिक्स एफएक्यू देखें , विशेष रूप से सवाल 4.3 और 4.4।
lsof एक विकल्प है। आप नीचे कुछ कोशिश कर सकते हैं:
lsof -p PROCESS_ID
यह निष्पादन योग्य वास्तविक स्थान सहित प्रक्रिया द्वारा खोली गई सभी फाइलों को सूचीबद्ध करेगा। फिर कुछ और awk, cut, grep इत्यादि को जोड़ना संभव है ताकि आप जो जानकारी ढूंढ रहे हैं वह पता चल सके।
एक उदाहरण के रूप में, मैंने अपनी 'जावा' प्रक्रिया की पहचान करने के लिए निम्नलिखित आदेशों को निष्पादित किया:
lsof -p 12345 | awk '{प्रिंट $ NF}' | grep 'जावा $'
ls
कमांड चलाने के लिए सुपरयुसर होने की जरूरत नहीं है ।