結論から
mysql -h {DB_ENDPOINT} {DB_NAME} -u {USER_NAME} -p -N -e "SELECT GROUP_CONCAT(ID) FROM information_schema.PROCESSLIST WHERE \`USER\` = '{USER_NAME}';"| awk '{print $1}' | xargs -I{} mysqladmin kill {} -h {DB_ENDPOINT} {DB_NAME} -u {USER_NAME} -p
MySQL
-N
のオプションをつけることで、ヘッダー出力をさせないようにすることができます。
-e
のオプションで任意のSQLを実行。
SELECT GROUP_CONCAT(ID) FROM information_schema.PROCESSLIST WHERE \
USER\ = '{USER_NAME}';
特定ユーザの実行プロセスを取得してカンマ区切り(,)で表示
awk
awk '{print $1}'
取得結果が | 1,2,3,4 |
のようになるので真ん中だけ取得するために実行
xargs
-I
のオプションで引数として渡す位置を指定できるパラメータを指定。今回は {}
mysqladmin
mysql のコマンドではプロセスキルの kill を複数IDに対して実行できなかったが、mysqladminなら実行できたので使用。