あると便利な監視スクリプトですよ〜
watchコマンドを利用して、mysqlのshow processlistを数秒おきに実行することができます。
こんな感じです↓引数にインターバルを指定できるようにしています。
ソースコード
#!/bin/sh interval=$1 # インターバルの単位は秒で初期値は1秒 test -z $interval && interval=1 watch -n $interval --differences "mysql -uroot -Dtest --table -Be 'show processlist;'"
たったこれだけです。
ポイントは、--table -Bのオプションで、これが無いと罫線が表示されず、見難いかと思います。
このオプションをつけると罫線が表示され、大変見易くなります。
あと、--differencesをつけておくと、どこが変更されたかが解り易く表示されます。
--table無しの場合の表示
Every 1.0s: mysql -uroot -Dtest -Be 'show processlist;' Tue Jan 24 13:44:15 2012 Id User Host db Command Time State Info 258 root localhost test Query 0 NULL show processlist
--table有りの場合の表示
Every 1.0s: mysql -uroot -Dtest --table -Be 'show processlist;' Tue Jan 24 13:45:33 2012 +-----+------+-----------+--------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----+------+-----------+--------+---------+------+-------+------------------+ | 271 | root | localhost | test | Query | 0 | NULL | show processlist | +-----+------+-----------+--------+---------+------+-------+------------------+