下記のようなコマンドで実行できます。{}で囲った部分は実際の運用に応じて値をあてこんでください。 mysql -u{user} -p{password} -e "SELECT CONCAT('kill ', pl.id, ';') FROM information_schema.processlist AS pl INNER JOIN information_schema.innodb_trx AS trx ON trx.trx_mysql_thread_id = pl.id WHERE pl.time > {time_to_kill};" |sed -e '1,1d' | mysql -u{user} -p{pass} 上記のコマンドの簡単な解説です。 information_schemaのprocesslistテーブルとトランザクションを管理しているinnodb_trxテーブルをjoinして、{time_to_kill}秒以上実行されているプロセスを特定し、特定したプロセスをkillするsqlコマンドを生成 mysql -u{user} -p{password} -e "SELECT CONCAT('kill ', pl.id, ';') FROM information_schema.processlist AS pl INNER JOIN information_schema.innodb_trx AS trx ON trx.trx_mysql_thread_id = pl.id WHERE pl.time > {time_to_kill};" 生成された行の1行目はヘッダーなので削除(sedコマンドを使って、1行目から1行目までを削除)。 sed -e '1,1d' 最後の部分で、生成されたsqlをmysqlに流し込んで実行させる。
IT関連の技術やプログラミングを中心に記事を書いています。ハードウェアも好きなので、日々のちょっとしたお役立ち情報も投稿しています。