हमारे पास कई एप्लिकेशन सर्वर हैं, और एक केंद्रीय निगरानी सर्वर है।पाइथन रिमोट पूंछ अनुकरण करने के लिए?
हम वर्तमान में ऐप सर्वर से रीयलटाइम में कई टेक्स्ट लॉगफाइल स्ट्रीम करने के लिए निगरानी सर्वर से "tail -f" के साथ ssh चला रहे हैं।
मुद्दा, पूरे दृष्टिकोण की बेरहमी के अलावा यह मुद्दा है कि एसएसएच प्रक्रिया को मारने से कभी-कभी ज़ोंबी पूंछ की प्रक्रियाओं को पीछे छोड़ दिया जा सकता है। हमने छद्म टर्मिनलों को बनाने के लिए उपयोग करने के साथ चारों ओर उलझा लिया है, लेकिन यह कभी-कभी ज़ोंबी प्रक्रियाओं को छोड़ देता है, और यह स्पष्ट रूप से नौकरी शेड्यूलिंग उत्पाद के साथ कहीं और समस्याएं पैदा कर रहा है।
एक सस्ता और गंदे समाधान के रूप में जब तक हम उचित केंद्रीकृत लॉगिंग (लॉगस्टैश और खरगोश एमक्यू, उम्मीदपूर्वक) प्राप्त नहीं कर सकते, मैं एक साधारण पायथन रैपर लिखने की उम्मीद कर रहा हूं जो एसएसएच और "पूंछ-एफ" शुरू करेगा, अभी भी कैप्चर करेगा आउटपुट, लेकिन पीआईडी को डिस्क पर टेक्स्टफाइल पर स्टोर करें ताकि आवश्यकता होने पर बाद में उचित पूंछ प्रक्रिया को मार सकें।
मैंने पहली बार subprocess.Popen का उपयोग करने की कोशिश की, लेकिन फिर मैंने रीयलटाइम में "tail -f" आउटपुट वापस प्राप्त करने के साथ मुद्दों को मारा (जिसे तब फ़ाइल में रीडायरेक्ट करने की आवश्यकता होती है) - जाहिर है कि वहां होने जा रहे हैं ब्लॉकिंग/बफर मुद्दों का मेजबान।
कुछ स्रोत pexpect, या pxssh या ऐसा कुछ उपयोग करने की अनुशंसा करते थे। आदर्श रूप से मैं केवल पायथन का उपयोग करना चाहता हूं और यदि संभव हो तो इसमें पुस्तकालय शामिल हैं - हालांकि, यदि पुस्तकालय वास्तव में ऐसा करने का एकमात्र तरीका है, तो मैं इसके लिए खुला हूं।
क्या "पूंछ-एफ" के साथ एसएसएच शुरू करने के लिए पाइथन प्राप्त करने का एक अच्छा आसान तरीका है, यहां स्थानीय STDOUT पर रीयलटाइम में आउटपुट प्राप्त करें (इसलिए मैं स्थानीय फ़ाइल पर रीडायरेक्ट कर सकता हूं), और पीआईडी को भी सहेज रहा हूं बाद में मारने के लिए एक फाइल के लिए? या यहां तक कि अगर मैं पूंछ-एफ के साथ एसएसएच का उपयोग नहीं करता हूं, फिर भी रीयलटाइम में एक दूरस्थ फ़ाइल स्ट्रीम करने का कोई तरीका है जिसमें पीआईडी को फाइल में सहेजना शामिल है?
चीयर्स, विक्टर
संपादित करें: बस स्पष्ट करने के लिए - हम पूंछ प्रक्रिया मरना चाहते जब हम SSH प्रक्रिया मार डालते हैं।
हम निगरानी सर्वर से ssh और "पूंछ -f" शुरू करने के लिए है, तो जब हम Ctlr-सी है कि दूरदराज के बॉक्स पर पूंछ प्रक्रिया के रूप में अच्छी तरह से मौत हो जाए चाहते हैं - हम यह रहने के लिए नहीं चाहते हैं पीछे। आम तौर पर एसएसएच को इसे ठीक करना चाहिए, लेकिन यह पूरी तरह से विश्वसनीय नहीं है, जिन कारणों से मुझे समझ में नहीं आता है, और यह हमारे नौकरी शेड्यूलिंग के साथ अच्छी तरह से खेल नहीं आता है।
इसलिए, दूसरी तरफ प्रक्रिया को जीवित रखने के लिए स्क्रीन का उपयोग करना हम नहीं चाहते हैं।
यह भी देखें http://stackoverflow.com/questions/136168/get-last-n-lines-of-a-file-with-python-similar-to-tail – unmounted
@bmvou, प्रश्न 'tail -f' –
के बारे में कुछ भी नहीं है शायद http://stackoverflow.com/questions/1703640/how-to-implement-a-pythonic-equivalent-of-tail-f? – agf