標籤:style http color 使用 資料 for
很多時候由於異常或程式錯誤會導致個別進程佔用大量系統資源,需要結束這些進程,通常可以使用以下命令Kill進程:
mysql中kill掉所有鎖表的進程 2009-05-12 14:03
轉載請保留如下作者資訊
作者 : jesse
部落格 : http://hi.baidu.com/leechl
3點鐘剛睡下, 4點多, 同事打電話告訴我使用者資料庫掛掉了. 我起床看一下進程列表.
mysql > show processlist ;
出來嘩啦啦好幾螢幕的, 沒有一千也有幾百條, 查詢語句把表鎖住了, 趕緊找出第一個Locked的thread_id, 在mysql的shell裡面執行.
mysql > kill thread_id ;
kill掉第一個鎖表的進程, 依然沒有改善. 既然不改善, 咱們就想辦法將所有鎖表的進程kill掉吧, 簡單的指令碼如下.
#!/bin/bash
mysql - u root - e " show processlist " | grep - i " Locked " >> locked_log . txt
for line in ` cat locked_log.txt | awk ‘{print $1 }‘ `
do
echo " kill $line ; " >> kill_thread_id . sql
done
現在kill_thread_id.sql的內容像這個樣子
kill 66402982 ;
kill 66402983 ;
kill 66402986 ;
kill 66402991 ;
.....
好了, 我們在mysql的shell中執行, 就可以把所有鎖表的進程殺死了.
mysql > source kill_thread_id . sql
當然了, 也可以一行搞定
for id in `mysqladmin processlist | grep -i locked | awk ‘{print $1}‘`
do
mysqladmin kill ${id}
done