Estoy tratando de contar el número de consultas SQL por segundo desde un archivo de registro y quiero hacerlo en tiempo real canalizando stdout desde grep a algún comando. (Estoy haciendo algunas pruebas de rendimiento)
Podría escribirlo yo mismo, pero pensé con seguridad que esto existiría.
Miré wc pero no vi una opción para permitir esto.
También podría usarlo para contar las solicitudes por segundo al extraer una cola del registro de acceso.
                    
                        linux
                                performance
                                
                    
                    
                        digidigo
fuente
                
                fuente

Respuestas:
página man
watch: ejecuta un programa periódicamente, mostrando la salida a pantalla completa Por defecto, el programa se ejecuta cada 2 segundos; use -n o --interval para especificar un intervalo diferente.
fuente
pves tu comando! P ipe V iewer imprime estadísticas sobre los datos que pasan a través de él y puede ejecutarse en cualquier lugar de su canalización, ya que canaliza stdin directamente hacia stdout. Por ejemplo:El
pvcomando imprime para stderr el número actual de líneas por segundo (el valor predeterminado es bytes por segundo), lo que, para esta fuente de datos en particular (el archivo de registro predeterminado de Nginx), equivale a las solicitudes web entrantes por segundo. Solo me importan los recuentos, así que me conecto con stdout/dev/null. También hay opciones como:-b(número total de líneas),--average-rate(tasa promedio desde el inicio), y--timer(rastrea cuánto tiempo ha estado funcionando la tubería).Si no lo dice
--line-mode, contará bytes, lo que probablemente no sea lo que desea para los registros del servidor, pero podría ser útil en otros lugares.Nota final:
... | pv -lb > file.txtes muy similar... | tee file.txt | awk '{printf "\r%lu", NR}', lo que también es útil para contar líneas, pero lapvllamada es mucho más corta, aunque el resultado no es tan emocionante: laspvactualizaciones se realizan cada segundo por defecto, mientras que eseawkcomando se actualiza continuamente.fuente
pves para lo que está diseñado (lo alcanzaríaawksi fuera tú), pero por supuesto que es posible. Supongamos quetwilight stream --timeout 5es un comando que muestreará desde el spritzer de Twitter durante 5 segundos y luego se cerrará:,RATE="$(twilight stream --timeout 5 | pv --line-mode --rate --force 2>&1 1>/dev/null | tr -s '\r\n' '\n' | tail -1)"luegoecho $RATEproduce algo como "[40.8 / s]" (tenga en cuenta la--forcebandera adicional , ya quepvsstderrya no es un TTY).> /dev/nullprogramas de que la salida ahora está "bloqueada en bloques" y ya no se transmite sin problemas. ¿Quizásunbuffersea necesario en algunos programas productores para que no cambien a bloquear el búfer de salida cuando detectan que están siendo canalizados?Tal vez deberías intentarlo
logtop?fuente
fuente
~/.my.cnfpara ejecutarsemysqladminsin solicitar contraseña?