SSH आउटपुट लाइन बफ़र्ड नहीं है?


35

मैं इस तरह से एक रिमोट मशीन पर एक स्क्रिप्ट चला रहा हूं:

ssh $host "pip install -r /path/to/requirements.txt"

लेकिन उत्पादन लाइन बफर नहीं है; एक बार में लौटाई गई एक पंक्ति को देखने के बजाय, सभी लाइनें (~ 10) एक बार कनेक्शन समाप्त होने पर सभी मुद्रित होती हैं।

इससे क्या हो रहा है? क्या उन्हें लाइन बफ़र करने के लिए मजबूर करने का कोई तरीका है?

(यह भी स्पष्ट रूप से बताने के लिए: जब मैं ssh $hostऔर "मैन्युअल रूप से" कमांड चलाता हूं , तो आउटपुट लाइन बफ़र्ड है, जैसा कि अपेक्षित है)

जवाबों:


45

ssh -t ...छद्म ट्टी आवंटन को बाध्य करने के लिए उपयोग करें (जो कि जब आप सामान्य रूप से ssh के माध्यम से लॉग इन करते हैं तो आपको मिलता है।)


मदद नहीं की, दुर्भाग्य से। यह एमटीयू के साथ भी समस्या हो सकती है, लेकिन दोनों में से किसी ने भी मदद नहीं की
निक रोज रोज

नीचे देखें मैग्नस की टिप्पणी को देखें -tt- कि जब मेरे लिए काम नहीं किया गया था।
टॉम डाल्टन

23

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

तो आप जो देख रहे हैं वह यह है कि प्रोग्राम का आउटपुट जो आप दूरस्थ रूप से चला रहे हैं (जैसा कि stdout को दिया गया है) लाइन-बफ़र्ड नहीं है; ssh अभी गुजर रहा है क्या यह जब यह हो जाता है। (मुझे लगता है कि ssh वास्तव में अपने आउटपुट पर बिल्कुल भी बफरिंग नहीं करता है - यह सुनिश्चित करने के लिए कम से कम जादुई तरीका होगा कि उपयोगकर्ता यह देखता है कि रिमोट प्रोग्राम का क्या उद्देश्य है।)


एक अनाम उपयोगकर्ता का सुझाव है कि स्टडआउट पूरी तरह से बफर्ड है, लाइन बफ़र नहीं है
माइकल Mrozek

डेव वांडरवीज ने मुझे आउट-ऑफ-बैंड बताया है कि वह वह था जिसने एडिट किया था, और यह सही है (यानी, स्टडआउट शुरू में पूरी तरह से बफर नहीं लाइन बफ़र है)।
डेविड वोलेवर

6

रयान फॉक्स के जवाब पर और भी अधिक विस्तार करने के लिए, ssh -tमेरे लिए भी काम नहीं किया, लेकिन ssh -ttकिया। Ssh मैन पेज के बारे में देखें -t:

एकाधिक-विकल्प विकल्प tty आवंटन को बाध्य करते हैं, भले ही ssh के पास कोई स्थानीय tty न हो

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