J'essaie de compter le nombre de requêtes SQL par seconde à partir d'un fichier journal et je veux le faire en temps réel en redirigeant stdout de grep vers une commande. (Je fais des tests de performances)
Je pourrais l'écrire moi-même, mais je pensais que cela existerait.
J'ai regardé wc mais je n'ai pas vu d'option permettant cela.
Je pourrais également l'utiliser pour compter les demandes par seconde en canalisant une queue à partir du journal d'accès.
linux
performance
digidigo
la source
la source
Réponses:
page de manuel
watch - exécute un programme périodiquement, affichant la sortie en plein écran Par défaut, le programme est exécuté toutes les 2 secondes; utilisez -n ou --interval pour spécifier un intervalle différent.
la source
pv
est votre commande! P ipe V iewer imprime des statistiques sur les données qui le traversent et peut s'exécuter n'importe où dans votre pipeline, car il redirige stdin directement vers stdout. Par exemple:La
pv
commande imprime sur stderr le nombre actuel de lignes par seconde (la valeur par défaut est octets par seconde), ce qui, pour cette source de données particulière (fichier journal par défaut de Nginx), équivaut aux requêtes Web entrantes par seconde. Je ne me soucie que des comptes, alors je fais passer la sortie/dev/null
. Il existe également des options telles que:-b
(nombre total de lignes),--average-rate
(taux moyen depuis le début), et--timer
(suit depuis combien de temps le tuyau passe).Si vous ne le dites pas
--line-mode
, il comptera les octets, ce qui n'est probablement pas ce que vous voulez pour les journaux du serveur, mais pourrait être utile ailleurs.Remarque finale:
... | pv -lb > file.txt
ressemble beaucoup à... | tee file.txt | awk '{printf "\r%lu", NR}'
, ce qui est également pratique pour compter les lignes, mais l'pv
appel est beaucoup plus court, bien que la sortie ne soit pas aussi excitante - sepv
met à jour toutes les secondes par défaut, tandis que cetteawk
commande est mise à jour en continu.la source
pv
pour quoi je serais (j'atteindraisawk
si j'étais vous), mais bien sûr c'est possible. Supposons qu'il s'agisse d'twilight stream --timeout 5
une commande qui échantillonnera à partir du spritzer Twitter pendant 5 secondes, puis quittera:,RATE="$(twilight stream --timeout 5 | pv --line-mode --rate --force 2>&1 1>/dev/null | tr -s '\r\n' '\n' | tail -1)"
puisecho $RATE
produira quelque chose comme "[40.8 / s]" (notez l'--force
indicateur supplémentaire , carpv
'sstderr
n'est plus un ATS).> /dev/null
montre que la sortie est désormais "bloc fragmenté" et ne diffuse plus en douceur. Peutunbuffer
- être est-il nécessaire sur certains programmes de production pour qu'ils ne basculent pas sur la mise en mémoire tampon de sortie lorsqu'ils détectent qu'ils sont canalisés?Vous devriez peut-être essayer
logtop
?la source
la source
~/.my.cnf
pour exécutermysqladmin
sans demander de mot de passe?