HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: Procinsh – Linuxプロセスを3Dでインスペクトするツール

Show HN: Procinsh – A 3D Linux process inspector (github.com)

11 pointsby a_kawashiro3 コメント

要約

Procinshは、Linuxのプロセスをシェル上で3D表示するWebベースのインスペクターです。Rustで開発されており、プロセスの階層や詳細情報を視覚的に探索できます。インストールにはRustやBPF関連のツールが必要ですが、ソースからのビルドが推奨されています。

全文翻訳

ProcInSh - Process in the Shell Linux向けのWebベースのプロセスインスペクターです。 Ghost in the Shellのように、ゴーストでプロセス空間をさまようことができます。 ブログ記事も参照してください。 スクリーンショット 使用方法 Linux x86-64が必要です。 どちらのインストール方法もネイティブコードをコンパイルし、Rust、Cコンパイラ、BPFバックエンドを持つclang、bpftool、pkg-config、libelfおよびzlib開発ファイル、そして/sys/kernel/btf/vmlinuxにあるBTF情報が必要です。 WSL2でのサポートは非常に限定的です。crates.ioからインストールするよりも、ソースからprocinshをビルドすることを推奨します。 Dockerのようなコンテナ環境ではテストしていません。 crates.ioからのインストール crates.ioからprocinshをインストールして実行します: (申し訳ありませんが、Ubuntuを使用していると仮定しています。そうでない場合は解釈し直してください) sudo apt-get install --yes --no-install-recommends \ build-essential clang llvm pkg-config libelf-dev zlib1g-dev python3 \ linux-tools-common linux-tools-generic cargo install procinsh --locked その後、実行し、ブラウザでhttp://127.0.0.1:9090を開きます。 リモートアクセスを許可するには、--allow-non-loopbackを使用しますが、注意してください。これは認証なしでプロセスメモリと環境変数を公開します。 sudo "$HOME/.cargo/bin/procinsh" --listen 127.0.0.1:9090 sudoを使いたくない場合は、代わりにsetcapを使用してください。 sudo setcap \ cap_sys_ptrace,cap_bpf,cap_perfmon,cap_dac_read_search=ep \ "$HOME/.cargo/bin/procinsh" "$HOME/.cargo/bin/procinsh" --listen 127.0.0.1:9090 自己ビルド Node.js 22以降(npm付き)と、rustup経由のRustも必要です。 Rustのバージョンとコンポーネントはrust-toolchain.tomlでピン留めされており、必要に応じてrustupが自動的にインストールします。 このリポジトリをクローンし、ルートから以下を実行します: sudo apt-get install --yes --no-install-recommends \ build-essential clang llvm pkg-config libelf-dev zlib1g-dev python3 \ linux-tools-common linux-tools-generic npm ci npm run build:web cargo build --release --locked その後、実行します: sudo ./target/release/procinsh --listen 127.0.0.1:9090 WSL2 (Ubuntu)でのビルド Ubuntuのbpftoolラッパーは、WSL2カーネルバージョンがUbuntuツールパッケージと異なるため、bpftoolが見つからないというエラーで失敗する可能性があります。 ラッパーをバイパスして、パッケージ化された実行可能ファイルにBPFTOOLを設定します: sudo apt-get update sudo apt-get install --yes --no-install-recommends \ build-essential clang llvm pkg-config libelf-dev zlib1g-dev python3 \ linux-tools-common linux-tools-generic for tool in /usr/lib/linux-tools/*/bpftool; do if [ -x "$tool" ]; then export BPFTOOL="$tool" break fi done "${BPFTOOL:?No packaged bpftool found; install linux-tools-generic}" version "$BPFTOOL" btf dump file /sys/kernel/btf/vmlinux format c >/tmp/procinsh-vmlinux.h npm ci npm run build:web cargo build --release --locked その後、実行します: sudo ./target/release/procinsh --listen 127.0.0.1:9090 さて、どこへ行こうか? プロセス空間は広大です。