tail หลายไฟล์ระยะไกล


41

มีวิธีไปยังไฟล์ tail 2 ระยะไกลหรือไม่?

ฉันมีเซิร์ฟเวอร์สองตัว (a และ b) อยู่เบื้องหลัง load balancer และฉันต้องการทำสิ่งนี้ถ้าเป็นไปได้:

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

ขอบคุณ!


ทำไมคุณถึงลบคำตอบ?
Pablo Fernandez

ส่วนใหญ่เป็นเพราะมันใช้งานไม่ได้ :-)
mat

@mat โอ้ฉันเพิ่งจะลองทำ :) ขอบคุณทุกคน!
Pablo Fernandez

มันไม่ทำงานเพราะโครงสร้าง <(foo) จะรอให้คำสั่งด้านในเสร็จสิ้นก่อนที่จะถูกแทนที่ด้วยไพพ์ในบรรทัดคำสั่งดั้งเดิมซึ่งซอฟต์แวร์จะสามารถอ่านได้และส่วนท้ายจะไม่จบ :-)
mat

คำตอบ:


31

สิ่งนี้ใช้ได้กับฉัน:

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

ใช่นั่นเป็นวิธีที่ฉันทำยกเว้นฉันมักจะมีเทอร์มินอล gnome หลายตัวเปิดโดยแต่ละครั้งจะมีเซสชันหนึ่งอยู่ภายใน
Tom O'Connor

1
มีวิธีการทำเช่นนี้โดยไม่ต้องเปิดหลาย ssh อิสระหรือไม่?
tgies

8
แต่นี้ไม่ได้ช่วยให้คุณหยุด tailing Ctrl+Cด้วย
sorin

@ โซรินเพื่อยุติกระบวนการเพียงนำแต่ละอันกลับสู่เบื้องหน้าด้วยfg; จากนั้นคุณสามารถctrl+cมัน คุณต้องทำอย่างนั้นหนึ่งครั้งสำหรับแต่ละหางที่คุณวิ่งอยู่ หรือคุณสามารถpkill -f sshกำหนดเป้าหมายทั้งหมดของพวกเขาได้ในเวลาเดียวกัน
เดลเดอร์สัน

34

ตัวเลือกที่ฉันต้องการคือไปกับ multitail ฉันจะเรียกใช้บางสิ่งเช่น:

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

1
ขอบคุณ! ฉันกำลังมองหาตัวอย่างของวิธีการใช้ multitail ผ่าน ssh / บนโฮสต์ระยะไกล!
Noah Sussman

Multitail เป็นทางออกที่แข็งแกร่งกว่ามาก
obfk

เว็บไซต์ของเรามีมากกว่า 10 โหนดในเว็บและ Multitail ล้มเหลวในการลองครั้งแรกกับข้อผิดพลาดOperation not permittedกับ 2 3 โหนดเว็บก็โอเค
Hieu Vo

ฉันยังได้รับOperation not permittedเบาะแสใด ๆ
Erik Aigner

7

คุณสามารถใช้เนื้อผ้าเพื่อโฮสต์หลายโฮสต์ (และผลลัพธ์ grep หากต้องการ):

$ 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 &

ตัวเลือก -f หลังจาก ssh อนุญาตให้คุณป้อนรหัสผ่านก่อนที่จะทำงานในพื้นหลัง จากนั้นคุณสามารถให้ผลลัพธ์ทีละบรรทัดในไฟล์เดียวและทำงาน:

tail -f /tmp/somefile

จะให้คุณควบคุมคำสั่ง "tail" ปัจจุบันเล็กน้อยในกรณีที่คุณต้องการใช้ตัวเลือก tail อื่น ๆ สำหรับการแสดงผล



5

ลองดูที่multitail เช่นเดียวกับตัวอย่างข้างต้นคุณสามารถกำหนดเป็นคำสั่งให้ ssh จากนั้นคุณจะจบลงด้วยการแสดงหน้าจอเดียว (และบัฟเฟอร์สำหรับการเลื่อนง่าย) บันทึกหลายรายการ มันยังทำการระบายสีซึ่งมีประโยชน์มากสำหรับการตรวจจับความผิดปกติ


2

Parallel sshมีทางออกที่ดีสำหรับสิ่งนี้:

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 ปิดใช้งานการหมดเวลาเชื่อมต่อมิฉะนั้น pssh ปิดการเชื่อมต่อ
  • -H '<host>...' เป็นรายการโฮสต์ที่จะเรียกใช้คำสั่ง
  • -P คือการเปิดใช้งานการพิมพ์ stdout ของแต่ละโฮสต์
  • 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 และจะแสดงให้คุณเห็น)
Olivier Dulac

1

คุณสามารถชำระเงิน dbitail

เครื่องมือ Java ที่ฉันสร้างสามารถอ่านไฟล์โลคัลและรีโมตโดยใช้ SSH มันค่อนข้างใช้งานง่าย

คำอธิบายเพิ่มเติม: https://github.com/pschweitz/DBITail/wiki

เพียงดาวน์โหลดเวอร์ชันที่สอดคล้องกับระบบปฏิบัติการของคุณจาก native jar release ที่สามารถใช้งานได้ภายใน Java Runtime ของคุณ (ต้องใช้ java 8_40 หรือสูงกว่า):

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

คุณสามารถค้นหาเอกสารที่สมบูรณ์ (ฝังด้วยและหน้าของ I Github ด้วย)

ฟิลิปป์


0

หรือคุณสามารถใช้หน้าจอเพื่อสร้างสองเทอร์มินัลแล้วแยกออก

SSH เป็นโฮสต์แรกที่คุณต้องการตัดต่อไฟล์บันทึกของและก่อนเรียกใช้ tail ให้เข้าสู่หน้าจอ

จากนั้นทำตามไฟล์บนโฮสต์นี้

CTRL + A, c จะสร้างหน้าจอหรือหน้าต่างใหม่ จากหน้าต่างใหม่นี้ไปยังโฮสต์ที่ 2 และตัดไฟล์ที่นั่น

ตอนนี้เพื่อสร้างหน้าจอแยก

CTRL + A, SHIFT + S สิ่งนี้จะสร้างหน้าจอแยกที่มีเชลล์ปัจจุบันในส่วนบนและส่วนล่างว่างเปล่า หากต้องการสลับไปยังส่วนด้านล่างและวางหน้าจอแรกไว้ภายใน

CTRL + A, TAB สิ่งนี้จะย้ายคุณไปยังส่วนล่าง ตอนนี้เพื่อนำเซสชัน SSH แรกของคุณไปยังพื้นที่นี้:

CTRL + A, "(เครื่องหมายคำพูด) และเลือกเซสชั่นแรกและกด Enter

ฉันรู้ว่านี่อาจดูเหมือนยิมนาสติกจำนวนมากและเป็น แต่คุณจะได้ใช้มันเมื่อคุณใช้มันสองสามครั้ง

นี่คือการสอนที่ดีมากหรือการอ้างอิงอย่างรวดเร็วถึงคำสั่งของหน้าจอ: http://www.pixelbeat.org/lkdb/screen.html

นอกจากนี้คุณสามารถสร้างไฟล์. screenrc เพื่อให้สิ่งที่ฉันอธิบายไว้เป็นไปโดยอัตโนมัติในครั้งแรกที่คุณเข้าสู่หน้าจอ

อีกสิ่งที่ดีเกี่ยวกับเรื่องนี้คือคุณสามารถปิดเซสชันของคุณและดำเนินการต่อที่อื่น ตัวอย่างเช่นคุณกำลังทำงานและมีการตรวจสอบบางอย่างเกิดขึ้น คุณสามารถปิดเซสชันได้โดยไม่ต้องออกจากระบบและดำเนินการต่อเมื่อคุณกลับถึงบ้านหรือไปยังที่อื่น


0

คุณสามารถท้ายไฟล์จากระยะไกลโดยใช้ bash และ rsync ฉันใช้มันและมันเป็นสคริปต์ทุบตีที่ยอดเยี่ยมดูบทช่วยสอนต่อไปนี้

เทลไฟล์จากระยะไกลโดยใช้ bash และ rsync


ลิงก์ใช้งานไม่ได้
czerasz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.