ps

Posted on:

psコマンドは、プロセスの情報を表示する定番のコマンドです。psの出力は、プロセスID、CPU使用率、メモリ使用率、コマンド名などの情報を含むテーブル形式で表示されます。 ただし、テーブル形式といっても厳密に縦が揃っているわけではなく、一定の幅を超えた場合はスペース区切りのように表示されます。 現在のようにメモリの使用量が多いプロセスが増えている場合、psの出力は非常に長くなり、見づらくなることがあります。

そして、プロセス数が多くなると、psの出力は画面に収まりきらず、スクロールして確認する必要があります。 これをgrepにより絞り込むと、ヘッダー行が表示されなくなり、どの列が何を表しているのか分からなくなってしまう ps-grep問題が発生します。

ovでは、これらの問題を解決する機能を取り揃えており、オプションを組み合わせることで、psの出力を見やすくすることができます。 見やすくしたpsの出力をovで終了時に出力することでps-grep問題も解決できます。

psの現代版コマンドとしてprocsコマンドが有名ですが、ovを使用することで、procs相当か、それ以上の機能を実現することができます。

基本的な使い方

psの出力は、一定の幅+スペース区切りで表示されるため、受け取ったコマンドが列を認識しづらい問題があります。ovでは、このような出力から列をできるだけただしく解釈する--column-widthオプションを使用することで、列の幅を自動的に調整し、列を認識しやすくすることができます。

列が正しく解釈されると、--column-rainbowオプションを使用することで、列ごとに色分けして表示することができます。

-H1オプションを使用することで、スクロールしてもヘッダー行を常に表示することができます。

ps aux | ov --column-width --column-rainbow -H1

ps ps

現代では、メモリの使用量が小さなプロセスから大きなプロセスまで幅広く存在するため、隣の列に大幅にはみ出してしまうことがあります。--alignオプションを使用することで、列の幅を揃えて表示することができ、見やすくなります。

alignalt+F(デフォルトキー)によっても変更できます。

ps aux | ov --column-width --column-rainbow -H1 --align

unalign/align unalign/align

また、alignモードでは、このとき自動的に列の状態により、右揃えか左揃えを判断して表示します。 ただし、この判断は完全ではないため、alt+a(デフォルトキー)で、右揃えか左揃えをトグルで切り替えることができます。

alignモードでは、列の固定や列の縮小も可能です。 列の固定は列を選択しているときにFキー(デフォルト)を押すことでトグルで切り替えられます。 列の縮小は列を選択しているときにsキー(デフォルト)を押すことでトグルで切り替えられます。

grepの代わりに使用

psの出力はプロセス数が多いと表示しきれないため、見たいプロセスを絞るために、grepを使うことがあります。 ただ、grepコマンドで表示を限定してしまうとヘッダー行も表示されなくなってしまいます。ヘッダー行と表示したいプロセスを同時に表示するために、トリッキーな方法が回答として紹介されることがあります(ps grep問題)が、ovを使用することで、ヘッダー行を表示したまま絞り込むことができます。

% ps aux|ov -H1 --column-width --column-rainbow --align --alternate-rows  --filter postgres -F

ps grep ps grep