Ich starte eine Website, und ich wollte einen Bash-One-Liner einrichten. Wenn also jemand auf die Seite kommt, würde er mit dem internen Summer piepen.
Bis jetzt funktioniert es mit den folgenden.
%Vor%Tail folgt dem access_log und dumps auf STDOUT, ruft STDOUT-Zeile auf, gibt die Zeile mit '\ 007' "internem Piepton-Hex-Code" zurück und erledigt ...
Das funktioniert wie eine Schönheit ... Jeder Treffer zeigt die Linie vom Log und piept ... Allerdings wurde es sehr schnell nervig, also wollte ich das tail -f /access/log
filtern, bevor es in das while
piped ist so dass lesen nur Zeilen, die mir wichtig sind. Ich dachte, grep "/index.php"
wäre ein guter Hinweis auf Besucher ...
Hier ist das Problem ...
Ich kann ...
%Vor%piept auf alles und ich kann tun ...
%Vor%und Seiten werden ohne Ton angezeigt, aber wenn ich das tue
%Vor%Nichts passiert, keine Zeile aus dem Protokoll, kein Piepton.
Ich denke, der Grep bringt es irgendwo durcheinander, aber ich kann nicht herausfinden, wo. Ich würde es lieben, ein Einliner zu sein, und ich weiß, dass es wirklich in einem Drehbuch getan werden sollte und einfacher sein würde, aber es erklärt nicht, warum das oben genannte, was ich denke, nicht funktionieren sollte.
> Die Grep-Ausgabe wird gepuffert, wenn sie in einer Pipe verwendet wird. Verwenden Sie --line-buffered
, um die Verwendung der Zeilenpufferung zu erzwingen, sodass Zeilen sofort ausgegeben werden.
Sie könnten auch die grep
- und while
-Schleife zu einem einzigen awk
-Anruf kombinieren:
Tags und Links bash