स्क्रिप्ट के लिए 'स्क्रीन' के अंदर आउटपुट कैसे प्राप्त करें?


33

मेरे पास एक screenउदाहरण चल रहा है, और मुझे screenअपनी स्क्रिप्ट के अंदर कुछ कोड निष्पादित करने और परिणाम प्राप्त करने की आवश्यकता होगी ।

पहला भाग काफी आसान है, मैं बस screen -S session_name -X eval 'stuff "$cmd"\015'
(मैंने एक स्क्रिप्ट में मिली एक पंक्ति को संशोधित किया )

दूसरा भाग, आउटपुट प्राप्त करना मुश्किल है। मैं पूरे आउटपुट को कैसे प्राप्त कर सकता हूं, जो भी इसका आकार है?



धन्यवाद :) दूसरे लिंक में बताया गया था कि पहला कमांड क्यों होना चाहिए stuff, जो कि मुझे समझने में परेशानी थी।
1

जवाबों:


29

आप विकल्प के screenसाथ शुरू कर सकते हैं -L। यह screenlog.nकार्यशील निर्देशिका में एक फ़ाइल बनाने के लिए स्क्रीन का कारण होगा (एन भाग संख्यात्मक है, एक शून्य से शुरू)।

आपके मामले में यह कुछ इस तरह दिखेगा: screen -S session_name -L -X eval 'stuff "$cmd"\015'

जब तक आप बाद में सफाई करना याद करते हैं, तब तक यह आपके साथ मेल खाता होना चाहिए।

लॉग की अंतिम पंक्ति के लिए, इसे आसानी से प्राप्त किया जा सकता है tail -1 screenlog.0, या संपूर्ण लॉग को पार्स किया जा सकता है, हालांकि आप चाहें।


एक बात, हालाँकि: screenमैंने जो कमांड दी थी, वह सिर्फ कमांड भेजने के लिए थी। शुरू करने के लिए screen, मैंने इस्तेमाल किया; screen -dmS name program;-)
1

22

एक और अति सूक्ष्म अंतर जो भविष्य में मददगार हो सकता है: यदि आप एक स्क्रीन सत्र में हैं, तो आप इंटरेक्टिवली लॉग फाइल बनाने के लिए पूछ सकते हैं। प्रेस ctrl- a H(कंट्रोल-ए के बाद राजधानी एच) स्क्रीन को पूछने के लिए कि आप लॉग फ़ाइल में जिस भी विंडो में हैं उसे डंप करना शुरू करें।


5
पता नहीं अगर यह एक नए संस्करण के कारण है man screen, लेकिन मेरा कहना है, मुझे केवल एच। सैड के लिए नियंत्रण के बिना, सीए एच टाइप करना है, कि यह पिछले लॉग को कैप्चर नहीं करता है।
Matmarbon

2
आप सही हे! लॉग फ़ाइल जनरेट करना CA H है। कृपया ध्यान दें कि यह कैपिटल एच है (लोअरकेस एच वर्तमान स्क्रीन की सिर्फ एक हार्डकॉपी पैदा करता है)।
रिकुमली

3
कृपया CA H के उत्तर को अपडेट करें। भविष्य के खोजकर्ता गुमराह हो सकते हैं और सही उत्तर देने से चूक सकते हैं।
gc5

क्या किसी को स्क्रिप्ट के माध्यम से कमांड भेजने का कोई तरीका पता है? जैसे स्प्लिट कंट्रोल + ए और फिर एच एक स्प्लिट सेकंड के बाद।
Zach डब्ल्यू।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.