क्या 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(मैन पेज: रिट्टी )reptyrscreenउदाहरण:
screen -S PID
retty $(pgrep PID)
reptyr PID
sudo apt-get install rettyहैं लेकिन इसमें कुछ सीमाएँ हैं। उत्तर में उल्लिखित मैन पेज देखें।