क्या fg
नौकरियों के लिए कमांड का उपयोग करने के लिए इसी तरह से अपने पीआईडी का उपयोग करके पहले से चल रही प्रक्रिया के लिए एक टर्मिनल संलग्न करना संभव है ?
क्या fg
नौकरियों के लिए कमांड का उपयोग करने के लिए इसी तरह से अपने पीआईडी का उपयोग करके पहले से चल रही प्रक्रिया के लिए एक टर्मिनल संलग्न करना संभव है ?
जवाबों:
आप उस प्रक्रिया के मानक फ़ाइल विवरणकों को प्राप्त कर सकते हैं, उदाहरण के लिए stdout
:
tail -f /proc/<pid>/fd/1
# ls -la /proc/24510/fd/1 lrwx------ 1 root root 64 Oct 31 08:34 /proc/24510/fd/1 -> socket:[444026]
यहाँ कुछ विकल्प हैं। किसी एक फ़ाइल में कमांड के आउटपुट को रीडायरेक्ट करना है, और फिर tail
उस फ़ाइल में वास्तविक समय में जोड़े जाने वाली नई लाइनों को देखने के लिए उपयोग करना है।
एक अन्य विकल्प यह है कि आप अपने प्रोग्राम को अंदर ही लॉन्च करें screen
, जो एक तरह का टेक्स्ट-आधारित टर्मिनल एप्लिकेशन है। स्क्रीन सत्रों को संलग्न और अलग किया जा सकता है, लेकिन नाममात्र का अर्थ केवल उसी उपयोगकर्ता द्वारा उपयोग किया जाना है, इसलिए यदि आप उपयोगकर्ताओं के साथ साझा करना चाहते हैं।
यदि आप चाहें तो प्रक्रिया को ट्रेस कर सकते हैं और देख सकते हैं कि यह क्या कर रहा है strace
:
strace -e trace=open -p 22254 -s 80 -o output.txt
-p PID
: प्रक्रिया आईडी PID के साथ प्रक्रिया से जुड़ी और अनुरेखण शुरू करें।-s SIZE
: अधिकतम स्ट्रिंग आकार को प्रिंट करने के लिए निर्दिष्ट करें (डिफ़ॉल्ट 32 है)।-o filename
: स्क्रीन (stderr) के बजाय फ़ाइल फ़ाइल नाम के लिए ट्रेस आउटपुट लिखें।sudo
किसी प्रक्रिया से जुड़ने के लिए आपको स्ट्रेस के साथ उपयोग करने की आवश्यकता होती है, और उपयोग -o ~/output.txt
करने के लिए फ़ाइल आपके घर के फोल्डर में रह जाती है।
आप नीचे दिए गए इन आदेशों का उपयोग किसी अन्य टर्मिनल पर चल रही प्रक्रिया को संलग्न करने के लिए कर सकते हैं:
retty
(मैन पेज: रिट्टी )reptyr
screen
उदाहरण:
screen -S PID
retty $(pgrep PID)
reptyr PID
sudo apt-get install retty
हैं लेकिन इसमें कुछ सीमाएँ हैं। उत्तर में उल्लिखित मैन पेज देखें।