ทำตามสองไฟล์บันทึก


14

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

ตอนนี้ฉันกำลังทำอะไรแบบนี้

tail -f sqlLogs.log | grep sql-time
tail -f perflogs.log | grep exec-time

สิ่งนี้จะส่งออกบางสิ่งไปยังคอนโซลทุกครั้งที่มีการเรียกใช้งาน SQL ในแอปพลิเคชัน แต่ฉันต้องเรียกใช้รหัสในสองรอบแยกต่างหาก SSH อย่างไรก็ตามสิ่งที่ฉันต้องการสามารถตัดทั้งสองไฟล์ในเซสชัน SSH เดียวกัน เป็นไปได้ไหม

คำตอบ:


20

ใช่หางเส้นเอาท์พุทผนวกเข้ากับไฟล์ทั้งหมดที่ได้รับในบรรทัดคำสั่ง:

tail -F sqlLogs.log perflogs.log | egrep '(sql-time|exec-time)'

มันง่ายกว่าวิธีของฉัน! (ฮ่า ๆ เพียง upvoted คำตอบที่ไม่ได้ฉันฉันจะออกจากเหมืองขึ้นเพื่อประโยชน์ของความอยากรู้)
เจเรมี

4

มีลักษณะที่MultiTail มันเป็นเพื่อนของคุณ

คุณสามารถมีหลายก้อยบันทึก

 - หน้าต่างที่แตกต่างกัน 'แยก' ของ al al vim
 - หรือให้รวมสองสตรีม (หรือ N) เข้าในมุมมองเดียวและ
 - คุณสามารถกรองไอน้ำได้โดย regex และถ้าคุณต้องการ
 - มันจะ 'ที' เอาท์พุทไปยังไฟล์

http://www.vanheusden.com/multitail/

บน Ubuntu 10.04: sudo apt-get install multitail


2

ถ้าใช่โดยใช้screenคำสั่งคุณสามารถมีเซสชัน bash 2 เซสชันที่ทำงานบนเทอร์มินัลเดียว

  • วิ่งscreenเพื่อเริ่มต้น
  • จากนั้นพิมพ์Ctrl-aแล้วS(หมายเหตุ: ทุน S) เพื่อแบ่งหน้าจอออกเป็น 2
  • Ctrl-aจากนั้นTabจะย้ายคุณระหว่างสองเซสชัน
  • Ctrl-aจากนั้นcจะเริ่มเชลล์ในภูมิภาคใหม่นั้น

(โปรดดูคำตอบของ Riccardo ก่อนใช้สิ่งนี้เขาง่ายกว่ามากฉันจะทิ้งเรื่องนี้ไว้เพราะมันอาจจะมีประโยชน์สำหรับคนที่มีปัญหาคล้ายกัน แต่แตกต่างกัน)


0

คุณสามารถใช้mkfifoเพื่อเอาท์พุทมัลติเพล็กเป็นหนึ่งท่อ

สร้างไพพ์ไปป์, ต่อท้ายไฟล์ n ไปยังไพพ์, จากนั้นให้ทำการไพพ์

 mkfifo pipeName
 tail file1 &
 tail file2 &
 ...
 tail fileN &
 cat pipeName

เมื่อเสร็จแล้ว

 rm pipeName

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