如何在状态高于x的mysql中显示完整的进程列表?

时间:2018-05-08 17:26:03

标签: mysql bash command-line

我正在编写一个“系统检查”bash脚本,对于其中一个项目,我想检查MySQL中的所有正在运行的进程,但我只关心它们是否具有高于30的状态。

在MySQL中,有没有办法显示只有状态高于x的进程列表,例如超过30?

我尝试了show processlist where state>=30;

我有版本5.5.58-0 + deb8u1。

2 个答案:

答案 0 :(得分:0)

@Hariraman Radhakrishnan回答说,SHOW PROCESSLIST命令无法修改。

但是,SHOW PROCESSLIST通过阅读链接,实际上是从information_schema.processlist读取的

这意味着您可以像这样对information_schema.processlist进行常规查询:

SELECT * 
FROM information_schema.processlist 
WHERE TIME > 30

如果您查看https://dev.mysql.com/doc/refman/8.0/en/processlist-table.html,则可以看到每一列的含义。

我已编写查询以选择所有已运行30秒以上的进程,但这也可能只是一个睡眠连接,例如,一个程序在开始时就进行连接,然后保持连接活动直到您再次关闭程序。

这意味着该过程可以运行数分钟,数小时或数天,但大部分时间将运行COMMAND = 'Sleep'

如果您只想查看长期运行的查询,则应将查询更新为: SELECT * FROM information_schema.processlist WHERE COMMAND != 'Sleep' AND TIME > 30;

状态更改时,时间会重置

在文档中:“线程处于当前状态的时间(以秒为单位)。)

答案 1 :(得分:-1)