Antworten:
Eine Idee wäre, die Ausgabe von tail
through zu sed
leiten und die Newline durch bell / newline zu ersetzen.
Aber es gibt wahrscheinlich eine einfachere Lösung, wenn Sie tail
innerhalb eines X-Fensters verwenden . Dort können Sie eine Aktion ausführen, wenn sich der Inhalt des Fensters ändert (Flackern, Klingeln, was auch immer).
sed
Idee ist genial, aber ich kenne nicht genug "sed", um sie zum Laufen zu bringen. Es sieht so aus, als ob ich keine Zeilenumbrüche auf die übliche Weise erfassen kann (wie ich es gewohnt bin). Ich denke, ich muss sed Bescheid geben interpretiere den eingehenden Stream nicht zeilenweise.
sed -e $'s/$/\a/'
ein $'\a'
(Bell-Zeichen in ksh / bash / zsh-Syntax) hinzu.
sed
Regexpt ist ein bisschen seltsam für meine naiven Augen.
$'...'
Syntax nicht universell ist. Beispielsweise unterstützt [t] csh dies nicht.
Wenn Sie GNU verwenden screen
, können Sie es so einstellen, dass es das Fenster mit dem Schwanz "beobachtet" und Sie in Ihrer Statusleiste oder durch die definierte Glocke Ihres TermCaps benachrichtigt, dass es in diesem Fenster neue Ausgaben gibt.
http://www.gnu.org/software/screen/manual/html%5Fnode/Monitor.html#Monitor
edit: musste dies nur hinzufügen, da du mac os x erwähnt hast
Nur zum Spaß, wenn Sie nach etwas Bestimmtem suchen, können Sie den say
Befehl von Mac OS X verwenden , um die Datei zu lesen, die Sie gerade ansehen. Holen Sie sich einfach den logtail
Befehl von:
http://www.hmug.org/pub/MacOS_X/BSD/Administration/Log/logcheck/
Und benutze es in einem Skript wie:
#!/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
Shows und Alarm (ich schätze, ich kann es auch klingeln lassen) NUR EINMAL. Nicht für jedes neue Ereignis, das passiert (nicht für jede neue Linie, die verfügbar ist)
beep
Befehl verwenden say
.
exec
Befehl screen verwenden, um dies zu tun. Das Beispiel auf der Hilfeseite !:sed -n s/.*Error.*/\007/p
sendet jedes Mal eine Glocke, wenn "Fehler" in diesem Fenster angezeigt wird.
Sie könnten Multitail verwenden . Es ist ein erweiterter Tail, der die Befehlsausführung bei Übereinstimmung mit regulären Ausdrücken unterstützt.
Beispiel: Der folgende Befehl gibt einen Ton aus und öffnet jedes Mal, wenn ein Martian- Quellpaket protokolliert wird, ein xmessage-Fenster .
multitail -ex "martian source" "play beep.wav; xmessage " -i /var/log/messages
Nur für das Protokoll, wie @Nils vorgeschlagen Ich verwende sed
ein hinzufügen bell
zu jeder Zeile.
Die sed
von @Gilles bereitgestellte Zeile
sed -e $'s/$/\a/'
Funktioniert auf meinem Mac (Ich habe in meinen Terminal \ Einstellungen \ Erweitert "Akustische Glocke" und "Visuelle Glocke" aktiviert).
$'...'
Escape-Sequenzen eine reine Bash-Sache sind.
Für alle anderen, die diese Seite finden, verwende ich tcsh und dies scheint zu funktionieren:
tail -f changingfile | sed -e 's/.*/& \a/'
Fragen Sie mich nicht, was die sed-Syntax bedeutet ...
Sie können versuchen konsole
, auf einer Registerkarte einen Alarm für neue Aktivitäten (oder Stille) zu aktivieren.
konsole
würde screen
einmal Alarm geben, während ich für jede neue Zeile einen Alarm erhalten muss.