यदि मैं पीएस का उपयोग करके चलने वाली एक प्रक्रिया देखता हूं, तो मैं निष्पादन योग्य कैसे पा सकता हूं?


11

यदि मैं एक प्रक्रिया का उपयोग करते हुए देख ps -eसकता हूं, तो मैं उस फ़ाइल को कैसे ढूंढ सकता हूं जिसने इसे लॉन्च किया है?


2
यह ओएस क्या है? लिनक्स, बीएसडी, सोलारिस ...
पैट्रिक

linux ... लेकिन क्रॉस-यूनिक्स समाधान का स्वागत करते हैं।
इंटरस्ट

जवाबों:


15

लिनक्स पर: यदि आप पीआईडी ​​को जानते हैं, तो आप उस फाइल के लिए cmdline फाइल को कैट कर सकते हैं। उदाहरण के लिए:

cat /proc/PID/cmdline

यह संभवतः विफल हो जाएगा यदि कार्यक्रम शुरू होने के बाद बाइनरी को स्थानांतरित किया गया था।

और निश्चित रूप से:

lsof -n | grep PID | grep ' txt '

तथा:

ls -la /proc/PID/exe

जो निष्पादन योग्य के लिए एक प्रतीकात्मक कड़ी है।


1
ध्यान दें कि /proc/PID/cmdlineएक नया वर्ण नहीं है, इसलिए आप शायद कुछ ऐसा करना चाहते हैं cat /proc/PID/cmdline ; echo ''
कीथ थॉम्पसन

वास्तव में, इसमें NUL वर्ण हैं जो तर्कों को अलग कर रहे हैं, इसलिए आप कुछ और भी अधिक विस्तृत जानकारी प्राप्त कर सकते हैं जैसेtr '\0' ' ' < /proc/PID/cmdline ; echo ''
कीथ थॉम्पसन

2

ps -eआदेश से प्रक्रिया आईडी की प्रतिलिपि बनाएँ और फिर निम्नलिखित चलाएँ:

ps x | grep <process-id>

यदि कोई एप्लिकेशन संपादन नहीं करता है तो विफल नहीं होगा [0]? iirc प्रेषक ऐसा करता है।
लोकगीत वैन हेस्डेन

हां, यह एक संभावना है। कोई भी कम यह लगभग हर बार काम आता है।
आदित्य पटवारी

0

अन्य उत्तरों में कोई भी विधि ( या ls, ) मेरे लिए काम नहीं करती है। यदि मैं करता हूँ:lsofcat

$ nano test.txt

यह मेरा विजेता है:

$ pgrep -f -l test
3074 nano test.txt

या, प्रोग्रामिंग में इसका उपयोग करने के लिए केवल PID प्राप्त करने के लिए:

$ pgrep -f test
3074

काली लिनक्स v1.0.6 (डेबियन आधारित) पर परीक्षण किया गया।
एक साधारण की तुलना में ls, मुझे यह स्वीकार करना चाहिए कि यह इतना पोर्टेबल समाधान नहीं है, लेकिन कम से कम यह काम करता है।

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