Ich versuche, die Anzahl der SQL-Abfragen pro Sekunde aus einer Protokolldatei zu ermitteln, und ich möchte dies in Echtzeit tun, indem ich stdout von grep in einen Befehl weiterleite. (Ich mache einige Leistungstests)
Ich könnte es selbst schreiben, dachte aber, dass es das geben würde.
Ich schaute auf wc, sah aber keine Option, um dies zu ermöglichen.
Ich könnte es auch verwenden, um Anforderungen pro Sekunde zu zählen, indem ich einen Schwanz aus dem Zugriffsprotokoll leite.
linux
performance
Digidigo
quelle
quelle
Antworten:
Manpage
watch - führt ein Programm in regelmäßigen Abständen aus und zeigt die Ausgabe im Vollbildmodus an. Standardmäßig wird das Programm alle 2 Sekunden ausgeführt. Verwenden Sie -n oder --interval, um ein anderes Intervall anzugeben.
quelle
pv
ist dein Befehl! P ipe V iewer drucken Statistiken über die Daten durchqueren, und können überall in Ihrer Pipeline laufen, da es Leitungen direkt über zu stdout stdin. Beispielsweise:Der
pv
Befehl gibt die aktuelle Anzahl von Zeilen pro Sekunde aus (der Standardwert ist Bytes pro Sekunde), was für diese bestimmte Datenquelle (Nginxs Standardprotokolldatei) eingehenden Webanforderungen pro Sekunde entspricht. Ich kümmere mich nur um die Zählungen, also pfeife ich stdout hinein/dev/null
. Es gibt auch Optionen wie:-b
(Gesamtzahl der Zeilen),--average-rate
(Durchschnittskurs seit Beginn) und--timer
(Verfolgt, wie lange die Pfeife gefahren ist).Wenn Sie das nicht sagen
--line-mode
, werden die Bytes gezählt. Dies ist wahrscheinlich nicht das, was Sie für Serverprotokolle wünschen, könnte aber an anderer Stelle nützlich sein.Letzte Anmerkung:
... | pv -lb > file.txt
ist ähnlich... | tee file.txt | awk '{printf "\r%lu", NR}'
, was auch zum Zählen von Zeilen nützlich ist, aber derpv
Aufruf ist viel kürzer, obwohl die Ausgabe nicht ganz so aufregend ist -pv
wird standardmäßig jede Sekunde aktualisiert, während dieserawk
Befehl kontinuierlich aktualisiert wird.quelle
pv
ist, wofür gebaut wurde (ich würde danach greifen,awk
wenn ich du wäre), aber natürlich ist es möglich. Angenommentwilight stream --timeout 5
ist ein Befehl, der für 5 Sekunden aus der Twitter Schorle wird probieren und beenden:RATE="$(twilight stream --timeout 5 | pv --line-mode --rate --force 2>&1 1>/dev/null | tr -s '\r\n' '\n' | tail -1)"
, dannecho $RATE
erzeugt so etwas wie „[40,8 / s]“ ( man beachte die zusätzliche--force
Flagge, dapv
iststderr
nicht mehr ein TTY ist).> /dev/null
Shows, dass die Ausgabe jetzt "blockiert" ist und nicht mehr reibungslos streamt. Vielleichtunbuffer
ist es bei einigen produzierenden Programmen erforderlich, dass sie nicht auf Block-Ausgabepufferung umschalten, wenn sie erkennen, dass sie weitergeleitet werden?Vielleicht solltest du es versuchen
logtop
?quelle
quelle
~/.my.cnf
die Ausführungmysqladmin
ohne Aufforderung zur Kennworteingabe konfiguriert ?