ฉันกำลังพยายามtail
ล็อกไฟล์บนเครื่องระยะไกลหลายเครื่องและส่งต่อผลลัพธ์ไปยังเวิร์กสเตชันท้องถิ่นของฉัน ฉันต้องการการเชื่อมต่อกับใกล้ชิดเมื่อมีการกด-CtrlC
ตอนนี้ฉันมีฟังก์ชั่นต่อไปนี้ซึ่งเกือบจะทำงานได้ตามที่ตั้งใจไว้
function dogfight_tail() {
logfile=/var/log/server.log
pids=""
for box in 02 03; do
ssh server-$box tail -f $logfile | grep $1 &
pids="$pids $!"
done
trap 'kill -9 $pids' SIGINT
trap wait
}
tail
การเชื่อมต่อปิดและฉันได้รับผลลัพธ์จาก แต่มีการบัฟเฟอร์บางชนิดเกิดขึ้นเนื่องจากเอาต์พุตมีแบตช์
และนี่คือส่วนที่สนุก ...
ฉันสามารถเห็นพฤติกรรมการบัฟเฟอร์เดียวกันเมื่อดำเนินการต่อไปนี้และผนวก "ทดสอบ" ไปยังไฟล์/var/log/server.log
บนเครื่องระยะไกล 4-5 ครั้ง ...
ssh server-01 "tail -f /var/log/server.log | grep test"
... และพบวิธีปิดใช้งานสองวิธี ...
เพิ่มแฟล็ก -t ไปยัง ssh
ssh -t server-01 "tail -f /var/log/server.log | grep test"
ลบอัญประกาศจากคำสั่งระยะไกล
ssh server-01 tail -f /var/log/server.log | grep test
อย่างไรก็ตามวิธีการเหล่านี้ไม่สามารถใช้งานได้กับฟังก์ชั่นที่ทำงานบนเครื่องหลายเครื่องที่กล่าวมาข้างต้น
ฉันได้ลองใช้ dsh ซึ่งมีพฤติกรรมการบัฟเฟอร์เหมือนกันเมื่อทำการดำเนินการ
dsh -m server-01,server-02 -c "tail -f /var/log/server.log | grep test"
กันที่นี่ถ้าฉันลบใบเสนอราคาบัฟเฟอร์หายไปและทุกอย่างทำงานได้ดี
dsh -m server-01,server-02 -c tail -f /var/log/server.log | grep test
ยังพยายามใช้parallel-ssh
งานได้เหมือนกันdsh
ทุกประการ ใครสามารถอธิบายสิ่งที่เกิดขึ้นที่นี่
ฉันจะแก้ไขปัญหานี้ได้อย่างไร คงจะเหมาะssh
ถ้าไปทางตรงถ้าเป็นไปได้
PS ฉันไม่ต้องการที่จะใช้multitail
หรือคล้ายกันเพราะฉันต้องการที่จะสามารถรันคำสั่งโดยพลการ
dbitail
และดาวน์โหลดได้จากที่นี่