มีวิธีทำtail -F
หรือless
ส่งเสียงบี๊บ (กดกริ่งในเทอร์มินัล) เมื่อมีข้อมูลใหม่เข้ามา (มีการเพิ่มบรรทัดใหม่ในไฟล์) หรือมียูทิลิตี้ยูนิกซ์อื่น ๆ ให้ทำเช่นนี้บน linux หรือ mac
มีวิธีทำtail -F
หรือless
ส่งเสียงบี๊บ (กดกริ่งในเทอร์มินัล) เมื่อมีข้อมูลใหม่เข้ามา (มีการเพิ่มบรรทัดใหม่ในไฟล์) หรือมียูทิลิตี้ยูนิกซ์อื่น ๆ ให้ทำเช่นนี้บน linux หรือ mac
คำตอบ:
แนวคิดที่จะนำไปสู่การส่งออกของtail
through sed
และแทนที่ newline ด้วย bell / newline
แต่มี propably วิธีการแก้ปัญหาได้ง่ายขึ้นถ้าคุณใช้tail
ภายในx หน้าต่าง ที่นั่นคุณสามารถดำเนินการเมื่อเนื้อหาของหน้าต่างเปลี่ยนไป (สั่นกระดิ่งหรืออะไรก็ตาม)
sed
ความคิดนี้ยอดเยี่ยม แต่ฉันไม่รู้ว่า 'sed' มากพอที่จะทำให้มันทำงานได้ดูเหมือนว่าฉันไม่สามารถขึ้นบรรทัดใหม่ใน regexpt ตามปกติ (ที่ฉันคุ้นเคย) ฉันเดาว่าฉันต้องบอก sed อย่าแปลค่าสตรีมที่เข้ามาทีละบรรทัด
sed -e $'s/$/\a/'
เพิ่ม$'\a'
(ตัวอักษรระฆังในไวยากรณ์ ksh / bash / zsh) ที่ส่วนท้ายของแต่ละบรรทัด
sed
regexpt เป็นบิตแปลกตาของฉันไร้เดียงสา
$'...'
ไวยากรณ์ไม่เป็นสากล ตัวอย่างเช่น [t] csh ไม่สนับสนุน
หากคุณใช้ GNU screen
คุณสามารถตั้งค่าเป็น "เฝ้าดู" หน้าต่างด้วยส่วนท้ายและมันจะเตือนคุณในแถบสถานะของคุณหรือด้วยระฆังที่กำหนดไว้ของ termcap ของคุณว่ามีเอาต์พุตใหม่ในหน้าต่างนั้น
http://www.gnu.org/software/screen/manual/html%5Fnode/Monitor.html#Monitor
แก้ไข: เพิ่งต้องเพิ่มสิ่งนี้เนื่องจากคุณพูดถึง mac os x
เพียงเพื่อความสนุกหากคุณกำลังมองหาบางอย่างเป็นพิเศษคุณสามารถใช้say
คำสั่งของ Mac OS X เพื่ออ่านไฟล์ที่คุณกำลังดูอยู่ เพิ่งได้logtail
รับคำสั่งจาก:
http://www.hmug.org/pub/MacOS_X/BSD/Administration/Log/logcheck/
และใช้ในสคริปต์เช่น:
#!/bin/bash
file=$1
offset=$(basename "$1")
# while true... let this thing run until it's killed...
while true; do
output=$(/usr/local/bin/logtail $file .${offset}.offset)
if [ ! -z "$output" ]; then
# print the output and say ding
echo "$output" && say ding
# to have the file read aloud to you, uncomment the following:
say "$output"
fi
# recheck every 5 seconds
sleep 5
done
screen
รายการและการแจ้งเตือน (ฉันเดาว่าฉันสามารถทำให้มันส่งเสียงกริ่งได้เช่นกัน) เพียงครั้งเดียวเท่านั้น ไม่ใช่สำหรับทุกเหตุการณ์ใหม่ที่เกิดขึ้น (ไม่ใช่สำหรับทุก ๆ บรรทัดใหม่ที่มีอยู่)
beep
say
exec
คำสั่งของหน้าจอเพื่อทำมันได้เช่นกัน ตัวอย่างใน manpage คือ!:sed -n s/.*Error.*/\007/p
สิ่งที่จะส่งสัญญาณระฆังทุกครั้งที่ "ข้อผิดพลาด" ปรากฏขึ้นในหน้าต่างนั้น
คุณสามารถใช้มัลติแทล มันเป็นหางที่ได้รับการปรับปรุงซึ่งรองรับการประมวลผลคำสั่งในการจับคู่นิพจน์ทั่วไป
เช่นคำสั่งต่อไปนี้จะเล่นเสียงและเปิดหน้าต่าง xmessage ทุกครั้งที่มีการบันทึกแพ็กเก็ตแหล่งดาวอังคาร
multitail -ex "martian source" "play beep.wav; xmessage " -i /var/log/messages
สำหรับบันทึกอย่างที่ @Nils แนะนำให้ใช้sed
เพื่อเพิ่ม a bell
ในแต่ละบรรทัด
sed
สายให้บริการโดย @Gilles
sed -e $'s/$/\a/'
ใช้งานได้บน mac ของฉัน (ฉันเปิดใช้งาน "เสียงเตือน" และ "ภาพเสียง" ใน Terminal \ preferences \ advanced ของฉัน)
$'...'
escape sequences นั้นเป็นเพียง Bash เท่านั้น
สำหรับคนอื่นที่พบหน้านี้ฉันใช้ tcsh และดูเหมือนว่าจะใช้งานได้:
tail -f changingfile | sed -e 's/.*/& \a/'
อย่าถามฉันว่าไวยากรณ์ที่ดีหมายถึงอะไร ...
คุณสามารถลองใช้การkonsole
แจ้งเตือนเกี่ยวกับกิจกรรมใหม่ (หรือปิดเสียง) ในแท็บใดก็ได้
konsole
มันจะเหมือนscreen
เป็นการแจ้งเตือนครั้งเดียวในขณะที่ฉันต้องได้รับการแจ้งเตือนสำหรับทุกบรรทัดใหม่