कई दूरस्थ फ़ाइलें पूंछें


41

वहाँ दूरस्थ पूंछ 2 फ़ाइलों के लिए एक रास्ता है?

मेरे पास लोड बैलेंसर के पीछे दो सर्वर (ए और बी) हैं और यदि संभव हो तो मैं कुछ इस तरह करना चाहूंगा:

tail -f admin@serverA:~/mylogs/log admin@serverB:~/mylogs/log

धन्यवाद!


आपने जवाब क्यों मिटा दिया?
पाब्लो फर्नांडीज

ज्यादातर इसलिए क्योंकि यह काम नहीं किया :-)
चटाई

@mat ओह मैं इसे आज़माने वाला था :)। फिर भी धन्यवाद!
पाब्लो फर्नांडीज

यह काम नहीं करता है क्योंकि <(foo) निर्माण मूल कमांड लाइन में एक पाइप द्वारा प्रतिस्थापित किए जाने से पहले आंतरिक कमांड के समाप्त होने की प्रतीक्षा करेगा , जहां से सॉफ्टवेयर पढ़ने में सक्षम होगा, और, पूंछ कभी खत्म नहीं होगी :-)
चटाई

जवाबों:


31

यह मेरे लिए काम किया:

ssh -n user@hostname1 'tail -f /mylogs/log' &
ssh -n user@hostname2 'tail -f /mylogs/log' &

हां, यह है कि मैं इसे कैसे करता हूं, सिवाय इसके कि मेरे पास आमतौर पर कई सूक्ति-टर्मिनल खुले हैं, जिनमें से प्रत्येक के अंदर एक सत्र है
टॉम ओ'कॉनर

1
वहाँ कई स्वतंत्र सत्र सत्र खोलने के बिना ऐसा करने का एक तरीका है?
tgies

8
लेकिन यह आपको पूंछ को रोकने की अनुमति नहीं देता है Ctrl+C
सोरिन

@ सोरिन प्रक्रियाओं को समाप्त करने के लिए, बस एक-एक को अग्रभूमि में वापस लाएं fg; तो आप ctrl+cयह कर सकते हैं। आप प्रत्येक पूंछ के लिए एक बार ऐसा करेंगे। या आप pkill -f sshएक ही समय में उन सभी को लक्षित कर सकते हैं ।
डेल एंडरसन

34

मेरा पसंदीदा विकल्प मल्टीटेल के साथ जाना है। मैं कुछ इस तरह से चलाऊंगा:

multitail -l 'ssh user@host1 "tail -f /some/log/file"' -l 'ssh user@host2 "tail -f /some/log/file"'

1
धन्यवाद! मैं एक उदाहरण के लिए देख रहा था कि कैसे ssh / पर दूरस्थ मेजबान पर मल्टीटेल का उपयोग करें!
नूह सूसमान

मल्टीटेल एक अधिक मजबूत समाधान है।
obfk

हमारी वेबसाइट में 10 से अधिक वेब नोड्स हैं, और मल्टीटैल पहले प्रयास में विफल रहता है Operation not permitted, 2 3 वेब नोड्स के साथ, यह ठीक है
Hieu Vo

मुझे भी Operation not permittedकोई सुराग मिले?
एरिक एग्नेर

7

आप कई मेजबानों को पूंछने के लिए कपड़े का उपयोग कर सकते हैं (और जरूरत पड़ने पर परिणाम भी प्राप्त कर सकते हैं):

$ fab -P -u 'USER' -p 'PASSWORD' --linewise -H host1,host2,host3 -- tail -f /path/to/my/log.log | grep ERROR

6

मैं सोच रहा था कि इसका उपयोग करना भी संभव हो सकता है:

ssh -f user@hostname1 "tail -f /var/log/file" > /tmp/somefile &
ssh -f user@hostname2 "tail -f /var/log/file" > /tmp/somefile &

Ssh के बाद -f विकल्प आपको पृष्ठभूमि में चलने से पहले एक पासवर्ड दर्ज करने की अनुमति देता है। तब आपके पास एकल फ़ाइल और चलाने में लाइन-बाय-लाइन परिणाम हो सकते हैं:

tail -f /tmp/somefile

यदि आप आउटपुट प्रदर्शित करने के लिए अन्य पूंछ विकल्पों का उपयोग करना चाहते हैं तो आपको वर्तमान "पूंछ" कमांड पर थोड़ा और नियंत्रण देना होगा।



5

मल्टीटैल पर एक नज़र डालें । ऊपर दिए गए उदाहरणों की तरह, आप इसे ssh को कमांड के रूप में दे सकते हैं, और फिर आप एक स्क्रीन को प्रदर्शित करने के साथ (और आसान स्क्रॉलबैक के लिए बफरिंग) कई लॉग को समाप्त करेंगे। यह रंगाई भी करता है, जो विसंगतियों को दूर करने के लिए बहुत उपयोगी है।


2

समानांतर ssh के पास इसके लिए एक अच्छा समाधान है:

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 कनेक्शन टाइमआउट अक्षम करता है, अन्यथा pssh ने कनेक्शन बंद कर दिया
  • -H '<host>...' कमांड चलाने के लिए मेजबानों की सूची है
  • -P प्रत्येक मेजबान के स्टडआउट को प्रिंट करने में सक्षम करना है
  • tail -f /var/log/app.log कोई भी आदेश हो सकता है जो आपका दूरस्थ शेल चला सकता है


1

बस एक अजीब समाधान है, लेकिन यह काम करता है!

स्क्रीन 1

ssh user@hostname1 "tail -f /var/log/file" > /dev/pts/6

स्क्रीन 2

ssh user@hostname2 "tail -f /var/log/file" > /dev/pts/6

यह काम करेगा / / dev / pts / 6 टर्मिनल पर लाइनों को आउटपुट करने के लिए (अपने स्वयं के टर्मिनल का पता लगाने के लिए: निष्पादित करें: who am i और यह आपको दिखाएगा।)
ओलिवियर दुलैक

1

आप चेकआउट डबिटेल कर सकते हैं।

एक जावा उपकरण जो मैंने बनाया, SSH का उपयोग करके स्थानीय और दूर की लॉग फ़ाइलों को पढ़ने में सक्षम। यह उपयोग करने के लिए काफी सरल है।

कुछ और स्पष्टीकरण: https://github.com/pschweitz/DBITail/wiki

आपके जावा रनटाइम के भीतर मूल जार रिलीज़ निष्पादन योग्य, आपके ऑपरेटिंग सिस्टम के अनुरूप संस्करण डाउनलोड करें (java 8_40 या उच्चतर की आवश्यकता है):

https://github.com/pschweitz/DBITail/releases

आप एक पूर्ण प्रलेखन पा सकते हैं (साथ में और मैं जीथब के पेज के साथ एम्बेडेड)

फिलिप


0

या आप दो टर्मिनलों को बनाने के लिए स्क्रीन का उपयोग कर सकते हैं और फिर उन्हें विभाजित कर सकते हैं।

पहले होस्ट में एसएसएच आप लॉग फ़ाइल को पूंछना चाहते हैं और पूंछ चलाने से पहले, स्क्रीन दर्ज करें।

फिर इस होस्ट पर फ़ाइल को पूंछें।

CTRL + A, c एक नई स्क्रीन या विंडो बनाएगा। इस नई विंडो से दूसरे होस्ट में ssh और फाइल को वहां लाएँ।

अब स्प्लिट स्क्रीन बनाने के लिए

CTRL + A, SHIFT + S, यह ऊपर के हिस्से में करंट शेल के साथ स्प्लिट स्क्रीन और नीचे वाले हिस्से को खाली बना देगा। नीचे के हिस्से में जाने के लिए और उसके भीतर पहली स्क्रीन लगाने के लिए,

CTRL + A, TAB, यह आपको निचले हिस्से में ले जाएगा। अब इस क्षेत्र में अपना पहला SSH सत्र लाने के लिए:

CTRL + A, "(प्रतीक का प्रतीक) और पहले सत्र का चयन करें और हिट दर्ज करें।

मुझे लगता है कि यह बहुत सारे जिम्नास्टिक की तरह लग सकता है, और यह है, लेकिन आप इसे एक बार उपयोग करने के बाद इसका उपयोग करते हैं।

यहाँ स्क्रीन के आदेशों के लिए एक बहुत अच्छा ट्यूटोरियल या त्वरित संदर्भ है: http://www.pixelbeat.org/lkdb/screen.html

इसके अतिरिक्त, आप एक .screenrc फ़ाइल बना सकते हैं ताकि जो मैंने वर्णित किया है उसमें से अधिकांश आपके द्वारा स्क्रीन पर दर्ज किए जाने के समय स्वचालित हो सके।

इसके बारे में एक और अच्छी बात यह है कि आप अपना सत्र बंद कर सकते हैं और इसे कुछ और जगह फिर से शुरू कर सकते हैं। उदाहरण के लिए, आप काम पर हैं और आपकी कुछ निगरानी चल रही है। आप बिना लॉग आउट किए अपना सत्र बंद कर सकते हैं, और जब आप घर या किसी अन्य स्थान पर पहुंचेंगे, तो फिर से शुरू कर सकते हैं।


0

आप बैश और rsync का उपयोग करके फ़ाइलों को दूर से देख सकते हैं, मैं इसका उपयोग कर रहा हूं और यह एक शानदार बैश स्क्रिप्ट है जो निम्नलिखित ट्यूटोरियल पर एक नज़र है

बैश और rsync का उपयोग करके टेल फाइलें दूरस्थ रूप से


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