背景
MacOSX には Activity Monitor というツールがあります。Windows 使いにはタスクマネージャのようなもの、Un*x 使いには top みたいなものと言えば通じるかなと思います。しかし自分が思うに、これらのツールと違って Activity Monitor には決定的に優れている点があります。それは
プロセスの様子をモニタリングする際にフィルタが掛けられること
です。
スクリーンショットは自分の立ち上げている zsh プロセスだけをモニタリングしている様子です。タスクマネージャ1ではソートはできても抽出まではできませんし、top でも特定の owner のプロセスは抽出できてもその中でプロセスの名前でフィルタを掛けることはできません。
これ、他の環境でもできたら便利だなぁと以前から思っていたのです。
21:57:04 >wtnabe< activitymonitor みたいに top を grep できたら便利なん
だがなー
できました。
topless
06:36:38 >wtnabe< 昨日の夜つぶやいていた activitymonitor みたいなやつは
ps, grep. topless でできた。例えば ruby 関係のプロセ
スは topless 'ps ax | \grep ruby | grep -v "grep
ruby"' で出せる。
06:40:39 >wtnabe< toplessは名前だけ知ってたけどこれ後藤大地さんか(*BSD
使いじゃない人向けに「漢のzsh」の中の人)。shスクリプ
トだしパッケージになくてもtarball落としてくればかなり
の環境で動くはず。
07:06:14 >wtnabe< インストールには make と pod2man が必要だけど、インス
トールしなくても動くし。ものすごく便利!!!ってわけじゃ
ないけど、持っておくとよさげだ。
http://codezine.jp/article/detail/67,
http://people.freebsd.org/~daichi/src/
07:12:00 >wtnabe< ちなみにインストールは古式ゆかしく make && make
install
07:31:00 >wtnabe< activitymonitor 代わりに使うときには ps よりも top の
batch mode と組み合わせると便利。ただし OSX 10.5 の
top には batch mode なかった。
後藤大地さん作の topless というツールはとにかくどんなコマンドでも top 風に定期的にリフレッシュしながら表示し続けてくれます。驚いたことに sh スクリプトで書かれており、Unix-like なシステムに標準で入っているコマンドだけを組み合わせて動作します。
インストール
FreeBSD なら ports にありますが、MacOSX, Linux は多くの場合パッケージにはありません。でも大丈夫、make と Perl と install があればインストールできます。tarball を紐解いて
make && make install
で ok. それも man が roff ではなく pod で書かれていて pod2man が必要ってだけなので、man が要らなければ topless というファイルをコピーするだけで構いません。
topless --help
と打てばだいたい使い方は分かります。
使い方
例えば
topless 'ps ax | grep zsh | grep -v "grep zsh"'
と打つと最初の Activity Monitor の例と同じように自分の zsh プロセスだけ抜き出すことができます。
本当に Activity Monitor のような情報が欲しければ
top -b
で top を batch mode で実行した結果を topless に渡すとそれっぽくなります。ただし -b オプションの batch mode は FreeBSD と GNU top では確認しましたが OSX の top にはありませんでした。まぁ、OSX では Activity Monitor 使えばいいんですけどね。今回の目的はまさにそれですから。
え。htop 入れればいいじゃん? な、なんだってー。
[追記] Linux だと watch かなと教えてもらいました。
Twitter / Hirofumi Saito: topless で Activity Monitor …
少なくとも Windows Vista までは ↩