我正在编写一个“系统检查”bash脚本,对于其中一个项目,我想检查MySQL中的所有正在运行的进程,但我只关心它们是否具有高于30的状态。
在MySQL中,有没有办法显示只有状态高于x的进程列表,例如超过30?
我尝试了show processlist where state>=30;
我有版本5.5.58-0 + deb8u1。
答案 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)