bash tail & watch


2

ฉันมีเซิร์ฟเวอร์แอปที่ฉันสตาร์ทและเขียนเอาต์พุตไปยัง stdout ฉันต้องการที่จะสามารถดูผลลัพธ์นั้นและออกคำสั่ง (ในกรณีนี้คำสั่ง growlnotify -m "Server is up") เมื่อบรรทัดที่ระบุถูกส่งไปยัง stdout แต่ฉันยังต้องการให้ผลลัพธ์ทั้งหมดไปที่ stdout

หมายเหตุฉันไม่อยากเขียนไฟล์


หมายเหตุ: ฉันคิดว่า (คุณควรทดสอบสิ่งนี้) บน UNIX / Linux / MacOSX ว่าถ้าคุณตัดสินใจที่จะฆ่าแอพแจ้งเตือนในบางจุดเนื่องจากคุณได้รับแจ้งคุณจะต้องฆ่าเซิร์ฟเวอร์ของคุณด้วย (เว้นแต่คุณจะไม่สนใจ SIGPIPE) ดังนั้นคุณจะต้องให้มันทำงานหรือสูญเสียเซิร์ฟเวอร์ของคุณ
Rich Homolka

ในกรณีคำรามก็แค่ส่งข้อความ async ไปยังกระบวนการ bg ที่แสดงการแจ้งเตือนบนหน้าจอ โดยทั่วไปคุณจะไม่ฆ่า แต่ฉันได้ทดสอบกับคำตอบที่ยอมรับแล้วและการยกเลิกข้อความก็ใช้ได้ดีโดยไม่ต้องฆ่าเซิร์ฟเวอร์
dstarh

คำตอบ:


2

ไพพ์เอาต์พุตของคำสั่งเซิร์ฟเวอร์ไปยังลูป while:

server | while read; do if [[ $REPLY =~ "Server is up" ]]; then
    # do something
  fi
  echo "$REPLY"
done

คุณสามารถให้เซิร์ฟเวอร์ทำงานในพื้นหลังโดยเขียนไปยังไฟล์บันทึก จากนั้นtail -f logfile | while read; do ...; doneใช้whileวงเดียวกับในคำตอบ
chepner

ฉันมักจะต้องการเซิร์ฟเวอร์ในเบื้องหน้าในกรณีนี้เพื่อ ctrl + c จะหยุดมันยังไม่ต้องการไฟล์บันทึก
dstarh

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