mcpField
P
procs

procs

公式Agent-ready
github.com開発ツール6.2kprocs2 日前に更新
リポジトリ公式サイト

procs について

procs は ps コマンドの高速で使いやすい代替品です。キーワード検索によるプロセス検索、ツリー形式でのプロセス関係表示、表示列のカスタマイズをサポートしています。

主な機能

  1. 01名前またはキーワードでプロセスを高速検索
  2. 02プロセスの親子関係をツリー形式で表示
  3. 03プロセスリストの表示列をカスタマイズ

活用シーン

  1. 01エージェント実行中に特定のプロセス状態を素早く確認
  2. 02シェルスクリプトでプロセス情報をフィルタリングして解析
  3. 03プロセスツリーを追跡してアプリケーションをデバッグ

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install procs

インストール後にprocs --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
procs
02
procs node

詳細

procs

procs は、Rust で書かれた ps の代替ツールです。

Actions Status

Changelog Crates.io procs homebrew

ドキュメントへのクイックリンク

機能

  • 色付きで読みやすい出力
    • ターミナルの背景に基づくテーマの自動検出
  • 複数カラムでのキーワード検索
  • ps ではサポートされていない追加情報
    • TCP/UDP ポート
    • 読み取り/書き込みスループット
    • Docker コンテナ名
    • 詳細なメモリ情報
  • ページャーのサポート
  • 監視モード(top のような機能)
  • ツリービュー

プラットフォーム

  • Linux に対応しています。
  • macOS は試験的に対応しています。
    • macOS のバージョンは、GitHub Actions 環境でのみ確認されています。
    • 実機で発生した問題の報告を歓迎します。
  • Windows に対応しています。
  • FreeBSD は試験的に対応しています。

インストール

バイナリのダウンロード

リリースページからダウンロードし、PATH に含まれるディレクトリに展開してください。

Packaging status
Nixpkgs

Nixpkgsからインストールできます。

nix-env --install procs
snapcraft

snapcraftからインストールできます。

sudo snap install procs
homebrew

homebrewからインストールできます。

brew install procs
MacPorts

MacPortsからインストールできます。

sudo port install procs
Alpine Linux

Alpine Linux のリポジトリからインストールできます。

apk add を実行する前に、正しいリポジトリ(最新情報については上記のリンクを参照してください)を有効にしてください。

sudo apk add procs
Arch Linux

Arch Linux の extra リポジトリからインストールできます。

sudo pacman -S procs
Scoop

scoopでインストールできます。

scoop install procs
Fedora
sudo dnf install procs
Windows
winget install procs
RPM

rpm でインストールできます。

sudo rpm -i https://github.com/dalance/procs/releases/download/v0.14.12/procs-0.14.12-1.x86_64.rpm
Cargo

cargoでインストールできます。

cargo install procs
X-CMD

x-cmdでインストールできます。

x env use procs
# or
x procs # Download procs, and invoke procs in a way that does not affect the current environment

インストールに関する注意事項

権限の問題

macOS では、一般ユーザーは他のユーザーのプロセスに関する情報にアクセスできません。 Linux では、一般ユーザーは他のユーザーの一部の情報(例:読み取り/書き込みスループット)にアクセスできません。

これらの情報を表示するには、sudo を使用してください。

$ sudo procs
[sudo] password for ...:

パスワードの入力を省略するには、次のエントリを /etc/sudoers に追加してください。

[user or group] ALL= NOPASSWD: [procs binary path]
// ex. myuser ALL= NOPASSWD: /usr/local/bin/procs

使い方

以下のスクリーンショットでは、設定として config/large.toml を使用しています。

すべてのプロセスを表示する

procs のみを入力します。すべてのプロセスの情報が表示されます。

procs

procs

数値以外のキーワードで検索する

引数としてキーワードを追加すると、既定では USER と Command が検索対象になります。

procs zsh

数値以外のキーワードに一致するカラムを追加するには、設定ファイルで nonnumeric_search オプションを使用できます。

procs_zsh

数値キーワードで検索する

キーワードに数値を使用すると、デフォルトで PID と照合されます。 数値はデフォルトで完全一致、数値以外は部分一致として扱われます。

procs --or 6000 60000 60001 16723

数値キーワードとの照合対象に列を追加する場合は、設定ファイルで numeric_search オプションを使用できます。

procs_port

procfs の権限では、現在のユーザーが所有するプロセスの待ち受けポートのみを特定できます。そのため、root として実行しない限り、すべてのポートが表示されるわけではありません。

検索キーワードの論理演算

キーワードが複数ある場合、キーワード間の論理演算をコマンドラインオプションで指定できます。

  • --and:すべてのキーワードに一致するプロセスを表示します。
  • --or:いずれかのキーワードに一致するプロセスを表示します。
  • --nand:すべてのキーワードに一致するプロセスを除外して表示します。
  • --nor:いずれかのキーワードに一致するプロセスを除外して表示します。

デフォルトの演算は、設定ファイルで指定できます。「[search]」セクションを参照してください。

Docker コンテナー名を表示する

Docker デーモン(unix:///var/run/docker.sock)へのアクセス権がある場合、「Docker」列が追加されます。

procs growi

procs_docker

procs は UNIX ドメインソケット経由でコンテナー情報を取得するため、macOS 上の Docker Toolbox(UNIX ドメインソケットを使用しません)はサポートされていません。 Docker Desktop for Mac はサポートされていますが、テストされていません。

ページャー

出力行数がターミナルの高さを超えると、ページャーが自動的に使用されます。 この動作とページャーコマンドは、設定ファイルで指定できます。

Linux / macOS

Linux と macOS では、デフォルトのページャーは less です。 less がない場合は、more が使用されます。 これらの代わりに、設定で use_builtin を指定して組み込みページャーを使用できます。

Windows

Windows では、常に組み込みページャーが使用されます。

監視モード

--watch または --watch-interval <second> オプションを使用すると、top のように procs の出力が自動的に更新されます。 --watch を使用した場合、更新間隔は 1s になります。 更新間隔は --watch-interval の引数で指定できます。 操作に使用できるキーボードショートカットは次のとおりです。

  • n:次の列にソート列を変更します
  • p:前の列にソート列を変更します
  • a:ソート順を昇順に変更します
  • d:ソート順を降順に変更します
  • q:終了します
ツリービュー

--tree オプションを使用すると、プロセスが依存関係の順にソートされ、左側に依存関係ツリーが表示されます。

procs --tree

procs_tree

設定に TreeSlot 列がある場合、その位置に依存関係ツリーが表示されます。

ソート列

列のソート順は、--sorta または --sortd オプションで変更できます。 --sorta と --sortd の最後の文字はソート順を表します。「a」は昇順、「d」は降順です。

ソートする列は、オプションのキーワードで選択します。 キーワードは、--list オプションで表示される列の種類と照合されます。 --sorta cputime の場合、列は CpuTime を基準に昇順でソートされます。 --sortd rss の場合、列は VmRss を基準に降順でソートされます。 キーワードは部分一致で照合され、大文字と小文字は区別されません。

デフォルトのソートは、設定ファイルの「[sort]」セクションで指定します。

procs --sortd cpu

procs_sort

列の挿入

--insert オプションは、Slot 列または MultiSlot 列の位置に新しい列を挿入します。 挿入する列は、オプションのキーワードで選択します。 キーワードはソートオプションと同じです。 挿入した列には Slot 列を使用できます。 多数の列を挿入する必要がある場合は、Slot 列を複数追加してください。 挿入した複数の列には MultiSlot 列を使用できます。 MultiSlot がある場合、残りの列はすべて MultiSlot に挿入され、それ以降の Slot/MultiSlot は使用されません。 使用されない Slot/MultiSlot は表示されません。

シェル補完

--gen-completion オプションは、現在のディレクトリにシェル補完ファイルを生成します。 次のシェルがサポートされています。

  • zsh
  • bash
  • fish
  • powershell
  • elvish

--gen-completion-out オプションは、シェル補完を標準出力に生成します。 一部のシェルでは、そのまま読み込むことができます。

source <(procs --gen-completion-out bash)

設定

設定ファイルのパス

設定ファイルを作成すると、設定を変更できます。 このリポジトリの config ディレクトリには、いくつかの設定例があります。 config/large.toml は、procs v0.9.21 より前のデフォルト設定です。

設定ファイルの場所は OS によって異なります。

  • Linux: ~/.config/procs/config.toml, /etc/procs/procs.toml
  • macOS: ~/Library/Preferences/com.github.dalance.procs/config.toml, /etc/procs/procs.toml
  • Windows: ~/AppData/Roaming/dalance/procs/config/config.toml

互換性のため、~/.procs.toml が存在する場合は、OS 固有の場所より優先されます。

コマンドラインから設定を指定する

--use-config オプションでは、組み込み設定を指定できます。 --load-config オプションでは、設定ファイルのパスを指定できます。

設定例

--gen-config オプションで、設定ファイルの完全な例を生成できます。

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

[[columns]]
kind = "Username"
style = "BrightGreen|Green"
numeric_search = false
nonnumeric_search = true
align = "Right"

[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
show_thread = false
show_thread_in_tree = true
cut_to_terminal = true
cut_to_pager = false
cut_to_pipe = false
color_mode = "Auto"

[sort]
column = 0
order = "Ascending"

[docker]
path = "unix:///var/run/docker.sock"

[pager]
mode = "Auto"
[[columns]] セクション

[[columns]] セクションでは、使用する列を定義します。 最初の [[columns]] は左端に表示され、最後のものは右端に表示されます。

キー値デフォルト説明
kindkind の一覧を参照列の種類
stylestyle の一覧を参照列のスタイル
numeric_searchtrue, falsefalse数値キーワードで列を照合できるかどうか
nonnumeric_searchtrue, falsefalse数値以外のキーワードで列を照合できるかどうか
alignLeft, Right, CenterLeftテキストの配置
max_width[Number]列の最大幅
min_width[Number]列の最小幅
header[String]代替のヘッダー説明
kind の一覧
procs kindps STANDARD FORMAT説明LinuxmacOSWindowsFreeBSD
Arch-not supported-バイナリのアーキテクチャoo
Ccgroup-not supported-圧縮形式のコントロールグループo
Cgroupcgroupコントロールグループo
Commandargsすべての引数を含むコマンドoooo
ContextSw-not supported-コンテキストスイッチ回数ooo
CpuTimecputime累積 CPU 時間oooo
Docker-not supported-Docker コンテナー名oo
Eipeip命令ポインターo
ElapsedTime-not supported-経過時間oooo
Enve output modifier環境変数oo
Espespスタックポインターo
FileNamecommファイル名ooo
Gidegidグループ IDoooo
GidFsfgidファイルシステムのグループ IDo
GidRealrgid実グループ IDooo
GidSavedsgid保存グループ IDooo
Groupegroupグループ名oooo
GroupFsfgroupファイルシステムのグループ名o
GroupRealrgroup実グループ名ooo
GroupSavedsgroup保存グループ名ooo
InvoluntaryContextSw-not supported-非自発的なコンテキストスイッチ回数oo
MajFltmaj_fltメジャーページフォールト回数oooo
MinFltmin_fltマイナーページフォールト回数ooo
MultiSlot-not supported---insert オプション用スロットoooo
NiceniNice 値ooo
Pgidpgidプロセスグループ IDooo
Pidpidプロセス ID(または [] で囲まれたスレッド ID)oooo
Policypolicyスケジューリングポリシーoo
Ppidppid親プロセス IDoooo
Prioritypri優先度oooo
Processorpsr現在割り当てられているプロセッサーoo
ReadBytes-not supported-ストレージから読み取ったバイト数oooo
RecvBytes-not supported-受信バイト数/秒(Windows 11)o
RtPriorityrtprioカーネル基本優先度(Windows)/リアルタイム優先度(Linux)oo
SecContextlabelセキュリティコンテキストo
SendBytes-not supported-送信バイト数/秒(Windows 11)o
Separator-not supported-列区切りとして | を表示oooo
Sessionsidセッション IDoooo
ShdPndpendingプロセスの保留中シグナルマスクoo
SigBlkblockedブロックされたシグナルマスクoo
SigCgtcaught捕捉されたシグナルマスクoo
SigIgnignored無視されたシグナルマスクoo
SigPndpendingスレッドの保留中シグナルマスクo
Slot-not supported---insert オプション用スロットoooo
Ssb-not supported-投機的ストアバイパスの状態o
StartTimestart_time開始時刻oooo
Statesプロセスの状態oooo
TcpPort-not supported-バインドされた TCP ポートooo
Threadsnlwpスレッド数oooo
TreeSlot-not supported-ツリー列用スロットoooo
Ttytty制御 TTYooo
UdpPort-not supported-バインドされた UDP ポートoo
Uideuidユーザー IDoooo
UidFsfuidファイルシステムのユーザー IDo
UidLogin-not supported-ログインユーザー IDo
UidRealruid実ユーザー IDooo
UidSavedsuid保存ユーザー IDooo
UsageCpu%cpuCPU 使用率oooo
UsageMem%memメモリ使用率oooo
Usereuserユーザー名oooo
UserFsfuserファイルシステムのユーザー名o
UserLogin-not supported-ログインユーザー名o
UserRealruser実ユーザー名ooo
UserSavedsuser保存ユーザー名ooo
VmData-not supported-データサイズoo
VmExetrsテキストセグメントサイズoo
VmHwm-not supported-常駐セットのピークサイズooo
VmLib-not supported-ライブラリコードのサイズo
VmLock-not supported-ロックされたメモリのサイズo
VmPeak-not supported-仮想メモリのピークサイズoo
VmPin-not supported-ピン留めされたメモリのサイズoo
VmPte-not supported-ページテーブルエントリーのサイズo
VmRssrss常駐セットサイズoooo
VmSizevsz物理ページサイズoooo
VmStack-not supported-スタックサイズoo
VmSwap-not supported-スワップアウトされた仮想メモリのサイズoo
VmTotal-not supported-仮想メモリの合計サイズ*1o*1*1
VoluntaryContextSw-not supported-自発的なコンテキストスイッチ回数oo
Wchanwchanプロセスが休止中のカーネル関数oo
WorkDir-not supported-現在の作業ディレクトリoo
WriteByte-not supported-ストレージに書き込んだバイト数oooo
style リスト
  • BrightBlack
  • BrightRed
  • BrightGreen
  • BrightYellow
  • BrightBlue
  • BrightMagenta
  • BrightCyan
  • BrightWhite
  • Black
  • Red
  • Green
  • Yellow
  • Blue
  • Magenta
  • Cyan
  • White
  • Color256
  • ByPercentage
  • ByState
  • ByUnit

ByPercentage、ByState、ByUnit などの特殊なスタイルがあります。 これらは値に応じて色を付けるスタイルです。 たとえば ByUnit を選択すると、値の各単位(K、M、G など)に色を指定できます。 色は [style.by_unit] セクションで設定できます。

その他の色は color と同じ方法で設定できます。

[style] セクション

[style] セクションでは、ヘッダー、単位、各スタイルの色を定義します。 使用できる色の一覧は以下のとおりです。

サブセクションキー値デフォルト説明
headercolor リストを参照BrightWhite|Blackヘッダーの色
unitcolor リストを参照BrightWhite|Black単位の色
treecolor リストを参照BrightWhite|Blackツリーの色
by_percentagecolor_000color リストを参照BrightBlue|Blue0%~25% の色
by_percentagecolor_025color リストを参照BrightGreen|Green25%~50% の色
by_percentagecolor_050color リストを参照BrightYellow|Yellow50%~75% の色
by_percentagecolor_075color リストを参照BrightRed|Red75%~100% の色
by_percentagecolor_100color リストを参照BrightRed|Red100% 以上の色
by_statecolor_dcolor リストを参照BrightRed|RedD 状態の色
by_statecolor_rcolor リストを参照BrightGreen|GreenR 状態の色
by_statecolor_scolor リストを参照BrightBlue|BlueS 状態の色
by_statecolor_tcolor リストを参照BrightCyan|CyanT 状態の色
by_statecolor_zcolor リストを参照BrightMagenta|MagentaZ 状態の色
by_statecolor_xcolor リストを参照BrightMagenta|MagentaX 状態の色
by_statecolor_kcolor リストを参照BrightYellow|YellowK 状態の色
by_statecolor_wcolor リストを参照BrightYellow|YellowW 状態の色
by_statecolor_pcolor リストを参照BrightYellow|YellowP 状態の色
by_unitcolor_kcolor リストを参照BrightBlue|Blue単位 K の色
by_unitcolor_mcolor リストを参照BrightGreen|Green単位 M の色
by_unitcolor_gcolor リストを参照BrightYellow|Yellow単位 G の色
by_unitcolor_tcolor リストを参照BrightRed|Red単位 T の色
by_unitcolor_pcolor リストを参照BrightRed|Red単位 P の色
by_unitcolor_xcolor リストを参照BrightBlue|Blueその他の単位の色
color リスト
  • BrightBlack
  • BrightRed
  • BrightGreen
  • BrightYellow
  • BrightBlue
  • BrightMagenta
  • BrightCyan
  • BrightWhite
  • Black
  • Red
  • Green
  • Yellow
  • Blue
  • Magenta
  • Cyan
  • White
  • Color256

色は | を使ってテーマごとに設定できます。

style = "BrightWhite|Black" # BrightWhite for dark theme and Black for light theme
style = "BrightWhite"       # BrightWhite for both theme

最初の色はダークテーマ用で、2番目の色はライトテーマ用です。 色を1つだけ指定した場合、その色は両方のテーマに適用されます。

Color256 は、以下のように 0~255 の値で指定できます。

style = "223|112" # 223 for dark theme and 112 for light theme
style = "223"     # 223 for both theme
[search] セクション

[search] セクションでは、キーワード検索のオプションを定義します。

KeyValueDefaultDescription
numeric_searchExact, PartialExact数値キーワードを完全一致または部分一致で検索するかどうか
nonnumeric_searchExact, PartialPartial数値以外のキーワードを完全一致または部分一致で検索するかどうか
logicAnd, Or, Nand, NorAndキーワード間の論理演算
caseSmart, Insensitive, SensitiveSmart検索時の大文字と小文字の区別
case

case は、検索時に大文字と小文字を区別するかどうかを指定します。

  • Smart: キーワードに大文字が含まれる場合は、大文字と小文字を区別して検索します。それ以外の場合は区別せずに検索します
  • Insensitive: 大文字と小文字を区別せずに検索します
  • Sensitive: 大文字と小文字を区別して検索します
[display] セクション

[display] セクションでは、出力表示のオプションを定義します。

KeyValueDefaultDescription
show_selftrue, falsefalse自プロセス( procs )を表示するかどうか
show_self_parentstrue, falsefalse自プロセスのみを子プロセスに持つ親プロセスを表示するかどうか
show_threadtrue, falsefalseスレッド情報を表示するかどうか( Linux のみ )
show_thread_in_treetrue, falsetrueツリーモードでスレッド情報を表示するかどうか( Linux のみ )
show_parent_in_treetrue, falsetrueツリーモードで親プロセスを表示するかどうか
show_children_in_treetrue, falsetrueツリーモードで子プロセスを表示するかどうか
show_headertrue, falsetrueヘッダー行を表示するかどうか
show_footertrue, falsefalseフッター行を表示するかどうか
show_kthreadstrue, falsetruekthread に属するプロセスを表示するかどうか( Linux のみ )
cut_to_terminaltrue, falsetrueターミナルへの出力時に出力行を切り詰めるかどうか
cut_to_pagertrue, falsefalseページャーへの出力時に出力行を切り詰めるかどうか
cut_to_pipetrue, falsefalseパイプへの出力時に出力行を切り詰めるかどうか
color_modeAuto, Always, DisableAuto--color コマンドラインオプションを指定しない場合の出力色付けのデフォルト動作
separator[String]│区切り文字として使用する文字列
ascending[String]▲昇順ソートのインジケーター
descending[String]▼降順ソートのインジケーター
tree_symbols[String; 5][│, ─, ┬, ├, └]ツリービューで使用する記号
abbr_sidtrue, falsetrueマシン SID を省略するかどうか( Windows のみ )
themeAuto, Dark, LightAutoデフォルトのテーマ

color_mode が Auto の場合、ターミナルとページャーでは色が有効になり、パイプでは無効になります。

theme が Auto の場合、ターミナルからテーマが自動的に検出されます。 一部のターミナルは自動検出に対応していないため、Dark または Light を明示的に指定できます。

abbr_sid

Windows の SID は非常に長いため、デフォルトでは省略されます。 abbr_sid が false の場合、SID は以下のように完全な形で表示されます。

S-1-5-21-789457439-2186958450-1652286173-1001

abbr_sid が true の場合、SID は以下のように表示されます。

S-1-5-21-...-1001
[sort] セクション

[sort] セクションでは、ソートに使用する列とソート順を定義します。

キー値デフォルト説明
column[Number]0ソートに使用する列番号
orderAscending, DescendingAscendingソート順

column が 0 の場合、値は左の列でソートされます。

[docker] セクション

[docker] セクションでは、docker デーモンとの通信方法を定義します。

キー値デフォルト説明
path[Path]unix:///var/run/docker.sockdocker デーモンへの UNIX ドメインソケット
[pager] セクション

[pager] セクションでは、ページャーの動作を定義します。

キー値デフォルト説明
modeAuto, Always, DisableAuto--pager コマンドラインオプションを指定しない場合のページャー使用時の既定の動作
detect_widthtrue, falsefalseauto モードで端末幅を超えるかどうかを検出するかどうか
use_builtintrue, falsefalse組み込みページャーを使用するかどうか
command[Command]less -SRページャーコマンド

mode が Auto の場合、出力行数が端末の高さを超えたときにのみページャーが使用されます。 デフォルトのページャーは less -SR です(less が見つからない場合は more -f です)。

Footnotes

  1. これらのプラットフォームでは VmRss の別名です ↩ ↩2 ↩3

コメント