从命令行输出中过滤整行

从命令行输出中过滤整行

我试图找到由某些 MySQL 查询引起的瓶颈,这些查询经常导致 Web 服务器过载。然后我发现了这个有用的命令:

mysqladmin -u myusername -p -i 1 processlist

每秒都会打印一个包含 MySQL 中所有活动进程的表,包括重要信息,例如 SQL 查询和所花费的秒数,如下图所示:

在此处输入图片描述

在大多数情况下,这已被证明非常有用。但现在的问题出在客户身上,客户每小时遇到一次或两次这样的问题。那么这个解决方案就像大海捞针。

所以,我想要实现的是打印每一行,只要有 5 秒或以上的时间,整行都打印出来。

我唯一接近我需要的就是将 grep 添加到输出中,如下所示:

mysqladmin -u digitalasesores -p -i 1 processlist | grep '| 5    |'

但显然这不是我想要的,因为它只会在查询达到 5 秒时显示。是否可以按 5 以上的任意数字进行过滤?

相关内容