首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何杀死Mysql show processlist中的所有进程?

如何杀死Mysql show processlist中的所有进程?
EN

Stack Overflow用户
提问于 2009-12-15 06:06:14
回答 24查看 420.9K关注 0票数 131

因为我在那里看到了很多进程,"time“列显示了所有进程的较大值。

EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2009-12-15 06:15:26

你需要一个接一个地杀死他们,MySQL没有任何大规模的kill命令。您可以用任何语言编写脚本,例如,在PHP中,您可以使用如下内容:

代码语言:javascript
运行
复制
$result = mysql_query("SHOW FULL PROCESSLIST");
while ($row=mysql_fetch_array($result)) {
  $process_id=$row["Id"];
  if ($row["Time"] > 200 ) {
    $sql="KILL $process_id";
    mysql_query($sql);
  }
}
票数 112
EN

Stack Overflow用户

发布于 2012-03-30 14:55:58

批量杀操作可节省时间。在MySql中执行此操作:

运行这些命令

代码语言:javascript
运行
复制
mysql> select concat('KILL ',id,';') from information_schema.processlist
where user='root' and time > 200 into outfile '/tmp/a.txt';

mysql> source /tmp/a.txt;

Reference

代码语言:javascript
运行
复制
---------edit------------

如果您不想存储在文件中,请存储在variable

只需在命令提示符下运行即可

代码语言:javascript
运行
复制
> out1=$(mysql -B test -uroot -proot --disable-column-names  -e "select concat('KILL ',id,';') from information_schema.processlist where user='root' and time > 200;")

> out2= $(mysql -B test -uroot -proot --disable-column-names  -e "$out1")
票数 224
EN

Stack Overflow用户

发布于 2012-05-16 05:02:19

我还搜索了如何通过MySQL解析命令SHOW PROCESSLIST,并以Shell中的一行代码结束:

代码语言:javascript
运行
复制
mysqladmin processlist -u <USERNAME> -p<PASSWORD> | \
awk '$2 ~ /^[0-9]/ {print "KILL "$2";"}' | \
mysql -u <USERNAME> -p<PASSWORD>

  • mysqladmin processlist将打印一个包含线程ids的表;
  • awk将从第二列中仅解析数字(线程ids)并生成MySQL KILL命令;
  • 以及最后一次调用mysql将执行传递的命令。

您可以在awk命令之前运行grep来过滤特定的数据库名称。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1903838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档