लिनक्स - किसी प्रक्रिया की वर्तमान कार्यशील निर्देशिका ज्ञात कीजिये?


11

अगर मेरे पास PID X की एक प्रक्रिया है, तो मैं यह कैसे पता लगा सकता हूं कि यह किस निर्देशिका में चल रहा था? मैं ps aux | grep Xपूरी कमांड लाइन के साथ देख सकता हूं कि यह किसके साथ लागू किया गया था। हालाँकि इस मामले में यह है ./script.sh, और मैं देखना चाहता हूँ कि script.shयह किसका चल रहा है।

जवाबों:


11

इसके साथ समस्या /proc/PID/exeयह है कि शेल स्क्रिप्ट के लिए, यह शेल के स्थान को दर्शाता है। इसके साथ समस्या /proc/PID/cwdयह है कि प्रक्रिया की वर्तमान कार्यशील निर्देशिका को दर्शाता है। यदि प्रक्रिया निर्देशिकाओं को बदल देती है, तो वह उस सिम्लिंक के लक्ष्य में परिलक्षित होती है।

यह दिखाएगा कि स्क्रिप्ट शुरू होने के समय $ PWD क्या था (उस प्रक्रिया आईडी को स्थान दें जहां आप "PID" देखें):

procdir=$(grep -az "\bPWD" /proc/PID/environ); echo $procdir

या केवल:

grep -az "\bPWD" /proc/PID/environ

यह उस कमांड को दिखाएगा जिसने इसे शुरू किया था ताकि आप देख सकें कि किसी रिश्तेदार या निरपेक्ष निर्देशिका का उपयोग किया गया था:

proccmd=$(grep -az PROC_NAME /proc/PID/cmdline); echo $proccmd

या केवल:

grep -az PROC_NAME /proc/PID/cmdline

साथ में, आपको यह दिखाना चाहिए कि कौन सी स्क्रिप्ट चल रही है। एक के लिए ./आप सभी की जरूरत के साथ शुरू कर दिया है procdir।


pwdx इससे बेहतर है।
— ब्योर्न

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