yiskw note

機械学習やプログラミングについて気まぐれで書きます

プロセスの表示をカラフルにわかりやすくするprocs


はじめに

f:id:yiskw713:20220122152302p:plain

今回はpsコマンドの改良版で,プロセスの表示をカラフルにわかりやすくするprocsを使用してみました.
procsは表示をわかりやすくするだけでなく,プロセスの検索なども容易に行うことができ,非常に便利です.
procsの使い方や設定方法について,こちらにメモを残しておきます.

ターミナルで使用できる便利なツールについては,他にも記事を書いておりますので,良ければご参照ください.

yiskw713.hatenablog.com

yiskw713.hatenablog.com

procsとは

f:id:yiskw713:20220122150241p:plain
公式レポジトリより引用

procsとは,Rust製のコマンドラインツールで,psコマンドの改良版です.
プロセスをカラフルに,わかりやすく表示することができます.
また,grepを使わずとも,プロセスの検索を行なったり,プロセスのソートなども行うことが可能です.
procs実行時に表示する項目についても設定できるので,カスタマイズ性が高いのも特徴です.

インストール方法

Homebrewやcargoなどからインストールが可能です.
その他のインストール方法については,こちらをご参照ください.

brew install procs
# or
cargo install procs

使い方

表示内容の設定

procsコマンドでプロセスを可視化することが可能です.

procs

f:id:yiskw713:20220122143301p:plain

デフォルトの設定だとPID, TTY, CPU, MEM, CPU Time, Commandの項目が表示されます.
表示する項目を変更する場合は,~/.config/procs/config.tomlに以下の設定を書き込みます.

config.tomlの内容はこちらをクリックしてください.

[[columns]]
kind = "Pid"
style = "BrightYellow|Yellow"
numeric_search = true
nonnumeric_search = false
align = "Left"

[[columns]]
kind = "User"
style = "BrightGreen|Green"
numeric_search = false
nonnumeric_search = true
align = "Left"

[[columns]]
kind = "Separator"
style = "White|BrightBlack"
numeric_search = false
nonnumeric_search = false
align = "Left"

[[columns]]
kind = "State"
style = "ByState"
numeric_search = false
nonnumeric_search = false
align = "Left"

[[columns]]
kind = "Nice"
style = "BrightMagenta|Magenta"
numeric_search = false
nonnumeric_search = false
align = "Right"

[[columns]]
kind = "Tty"
style = "BrightWhite|Black"
numeric_search = false
nonnumeric_search = false
align = "Left"

[[columns]]
kind = "UsageCpu"
style = "ByPercentage"
numeric_search = false
nonnumeric_search = false
align = "Right"

[[columns]]
kind = "UsageMem"
style = "ByPercentage"
numeric_search = false
nonnumeric_search = false
align = "Right"

[[columns]]
kind = "VmSize"
style = "ByUnit"
numeric_search = false
nonnumeric_search = false
align = "Right"

[[columns]]
kind = "VmRss"
style = "ByUnit"
numeric_search = false
nonnumeric_search = false
align = "Right"

[[columns]]
kind = "TcpPort"
style = "BrightCyan|Cyan"
numeric_search = true
nonnumeric_search = false
align = "Left"
max_width = 20

[[columns]]
kind = "UdpPort"
style = "BrightCyan|Cyan"
numeric_search = true
nonnumeric_search = false
align = "Left"
max_width = 20

[[columns]]
kind = "ReadBytes"
style = "ByUnit"
numeric_search = false
nonnumeric_search = false
align = "Right"

[[columns]]
kind = "WriteBytes"
style = "ByUnit"
numeric_search = false
nonnumeric_search = false
align = "Right"

[[columns]]
kind = "Slot"
style = "ByUnit"
numeric_search = false
nonnumeric_search = false
align = "Right"

[[columns]]
kind = "Separator"
style = "White|BrightBlack"
numeric_search = false
nonnumeric_search = false
align = "Left"

[[columns]]
kind = "CpuTime"
style = "BrightCyan|Cyan"
numeric_search = false
nonnumeric_search = false
align = "Left"

[[columns]]
kind = "StartTime"
style = "BrightMagenta|Magenta"
numeric_search = false
nonnumeric_search = false
align = "Left"

[[columns]]
kind = "Separator"
style = "White|BrightBlack"
numeric_search = false
nonnumeric_search = false
align = "Left"

[[columns]]
kind = "Command"
style = "BrightWhite|Black"
numeric_search = false
nonnumeric_search = true
align = "Left"

[style]
header = "BrightWhite|Black"
unit = "BrightWhite|Black"
tree = "BrightWhite|Black"

[style.by_percentage]
color_000 = "BrightBlue|Blue"
color_025 = "BrightGreen|Green"
color_050 = "BrightYellow|Yellow"
color_075 = "BrightRed|Red"
color_100 = "BrightRed|Red"

[style.by_state]
color_d = "BrightRed|Red"
color_r = "BrightGreen|Green"
color_s = "BrightBlue|Blue"
color_t = "BrightCyan|Cyan"
color_z = "BrightMagenta|Magenta"
color_x = "BrightMagenta|Magenta"
color_k = "BrightYellow|Yellow"
color_w = "BrightYellow|Yellow"
color_p = "BrightYellow|Yellow"

[style.by_unit]
color_k = "BrightBlue|Blue"
color_m = "BrightGreen|Green"
color_g = "BrightYellow|Yellow"
color_t = "BrightRed|Red"
color_p = "BrightRed|Red"
color_x = "BrightBlue|Blue"

[search]
numeric_search = "Exact"
nonnumeric_search = "Partial"
logic = "And"

[display]
show_self = false
cut_to_terminal = true
cut_to_pager = false
cut_to_pipe = false
color_mode = "Auto"
separator = "│"
ascending = "▲"
descending = "▼"
tree_symbols = ["│", "─", "┬", "├", "└"]
abbr_sid = true

[sort]
column = 0
order = "Ascending"

[pager]
mode = "Auto"

上記の設定は,公式で提供されているこちらの設定を使用しました.
ただし,Docker Desktop for Macではコンテナ内のプロセスをうまく取得できなかったので,dockerの項目だけ削除しております.
その他の細かい設定方法につきましては,こちらをご参照ください.

以上を設定してprocsを実行すると以下のようになります.

f:id:yiskw713:20220122152302p:plain

数字以外の文字でプロセスを検索する (non-numeric keyword)

数字以外の文字でプロセスを検索したい場合は,procsコマンドの後にキーワードを指定するだけです.

procs zsh

f:id:yiskw713:20220122153332p:plain
公式レポジトリより引用

数字でプロセスを検索する (numeric keyword)

PIDなどの数字を検索する場合は,--or / --and / --nand / --norオプションの後にキーワードを指定します.

procs -or 6000 60000 60001 16723

f:id:yiskw713:20220122153619p:plain
公式レポジトリより引用

--orオプションは指定したキーワードのどれかにマッチしたら表示,
--andオプションは指定したキーワード全てにマッチしたら表示,
--nandオプションは指定した全てのキーワードにマッチしなければ表示,
--norオプションは指定したキーワードどれかに一致しなければ表示します.

これらのオプションを使用して検索するかどうかは,設定ファイル(~/.config/procs/config.toml)のnumeric_searchオプションで設定できます.

watchモードを使用する

--watchオプション,もしくは--watch-interval <secon>を指定することで,プロセスを監視し続けることが可能です.

tree viewでプロセスを表示する

--treeオプションを指定すると,プロセスの依存関係ごとに並び替えられて表示されます.

procs --tree

f:id:yiskw713:20220122154529p:plain
公式レポジトリより引用

カラムをソートして表示する

昇順に表示する場合は--sortaオプション,降順に表示する場合は--sortdオプションを指定して,
その後にソートしたいカラム名を指定します.

procs --sortd cpu

f:id:yiskw713:20220122154724p:plain
公式レポジトリより引用

まとめ

psコマンドの改良版で,プロセスの表示をカラフルにわかりやすくするprocsを使用してみました.
psコマンドよりも見やすく,検索やソートなども容易で非常に使いやすかったです.
他にも色々なツールが開発されているので,色々と試していきたいと思います.

参考

関連記事

yiskw713.hatenablog.com

yiskw713.hatenablog.com

yiskw713.hatenablog.com