
人間のためのより親しみやすい ss / netstat。クリーンなTUIまたはスタイル付きテーブルでネットワーク接続を確認できます。

brew install snitch
@bevanjkay がsnitchをhomebrew-coreに追加してくれたことに感謝
go install github.com/karol-broda/snitch@latest
nix-env -iA nixpkgs.snitch
@DieracDelta がsnitchをnixpkgsに追加してくれたことに感謝
# 試す
nix run github:karol-broda/snitch
# プロファイルにインストール
nix profile install github:karol-broda/snitch
# またはflake inputsに追加
{
inputs.snitch.url = "github:karol-broda/snitch";
}
# その後: inputs.snitch.packages.${system}.default を使用
snitchをflake inputsに追加し、home-managerモジュールをインポート:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
snitch.url = "github:karol-broda/snitch";
};
outputs = { nixpkgs, home-manager, snitch, ... }: {
homeConfigurations."user" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
modules = [
snitch.homeManagerModules.default
{
programs.snitch = {
enable = true;
# オプション: nixpkgsの代わりにflakeのパッケージを使用
# package = snitch.packages.x86_64-linux.default;
settings = {
defaults = {
theme = "catppuccin-mocha";
interval = "2s";
resolve = true;
};
};
};
}
];
};
};
}
利用可能なテーマ: ansi, catppuccin-mocha, catppuccin-macchiato, catppuccin-frappe, catppuccin-latte, gruvbox-dark, gruvbox-light, dracula, nord, tokyo-night, tokyo-night-storm, tokyo-night-light, solarized-dark, solarized-light, one-dark, mono
# yay使用
yay -S snitch-bin
# paru使用
paru -S snitch-bin
curl -sSL https://raw.githubusercontent.com/karol-broda/snitch/master/install.sh | sh
利用可能な場合は~/.local/binに、そうでなければ/usr/local/binにインストール。上書きするには:
curl -sSL https://raw.githubusercontent.com/karol-broda/snitch/master/install.sh | INSTALL_DIR=~/bin sh
macos: インストールスクリプトは自動的にバイナリの隔離属性(
com.apple.quarantine)を削除し、ゲートキーパーの警告なしで実行できるようにします。これを無効にするには、KEEP_QUARANTINE=1を設定します。
GitHub Container Registryから事前ビルドされたOCIイメージが利用可能:
# ghcr.ioからプル
docker pull ghcr.io/karol-broda/snitch:latest # alpine (デフォルト)
docker pull ghcr.io/karol-broda/snitch:latest-alpine # alpine (~17MB)
docker pull ghcr.io/karol-broda/snitch:latest-scratch # 最小限、バイナリのみ (~9MB)
docker pull ghcr.io/karol-broda/snitch:latest-debian # debian trixie
docker pull ghcr.io/karol-broda/snitch:latest-ubuntu # ubuntu 24.04
# または特定のバージョンを使用
docker pull ghcr.io/karol-broda/snitch:0.2.0-alpine
あるいは、nix flakeを使用してローカルでビルド:
nix build github:karol-broda/snitch#snitch-alpine
docker load < result
コンテナの実行:
# 基本的な使用法 - ホストのソケットは見えるがプロセス名は見えない
docker run --rm --net=host snitch:latest ls
# 完全な情報 - PID、プロセス名、ユーザーを含む
docker run --rm --net=host --pid=host --cap-add=SYS_PTRACE snitch:latest ls
| フラグ | 目的 |
|---|---|
--net=host | ホストネットワーク名前空間を共有(ホスト接続を表示するために必要) |
--pid=host | ホストPID名前空間を共有(プロセス情報に必要) |
--cap-add=SYS_PTRACE | /proc/<pid>からプロセス詳細を読み取る |
注:
CAP_NET_ADMINとCAP_NET_RAWは必要ありません。snitchは/proc/net/*から読み取り、特別なネットワーク機能は不要です。
リリースからダウンロード:
snitch_<version>_linux_<arch>.tar.gz または .deb/.rpm/.apksnitch_<version>_darwin_<arch>.tar.gztar xzf snitch_*.tar.gz
sudo mv snitch /usr/local/bin/
macos: "デベロッパを確認できないため開けません" とブロックされた場合は、次を実行:
xattr -d com.apple.quarantine /usr/local/bin/snitch
snitch # 対話型TUIを起動
snitch -l # リスニングソケットのみ表示するTUI
snitch ls # スタイル付きテーブルを表示して終了
snitch ls -l # リスニングソケットのみ
snitch ls -t -e # TCP確立済み接続
snitch ls -p # プレーン出力(解析可能)
snitch / snitch topライブ更新される接続リストの対話型TUI。
snitch # すべての接続
snitch -l # リスニングのみ
snitch -t # TCPのみ
snitch -e # 確立済みのみ
snitch -i 2s # 2秒間隔で更新
キーバインド:
j/k, ↑/↓ ナビゲート
g/G 先頭/末尾
t/u TCP/UDP切替
l/e/o リスニング/確立済み/その他切替
s/S ソート切替 / 逆順
w プロセス監視(ハイライト)
W 全監視をクリア
K プロセスを強制終了(確認あり)
/ 検索
enter 接続詳細
? ヘルプ
q 終了
snitch lsワンショットテーブル出力。出力が端末の高さを超える場合は自動的にページャを使用。
snitch ls # スタイル付きテーブル(デフォルト)
snitch ls -l # リスニングのみ
snitch ls -t -l # TCPリスナー
snitch ls -e # 確立済みのみ
snitch ls -p # プレーン/解析可能な出力
snitch ls -o json # JSON出力
snitch ls -o csv # CSV出力
snitch ls -n # 数値(DNS解決なし)
snitch ls --no-headers # ヘッダーを省略
snitch jsonスクリプト用JSON出力。
snitch json
snitch json -l
snitch watch指定間隔でJSONフレームをストリーム出力。
snitch watch -i 1s | jq '.count'
snitch watch -l -i 500ms
snitch upgrade更新を確認し、その場でアップグレード。
snitch upgrade # 更新を確認
snitch upgrade --yes # 自動アップグレード
snitch upgrade -v 0.1.7 # 特定のバージョンをインストール
ショートカットフラグはすべてのコマンドで使用可能:
-t, --tcp TCPのみ
-u, --udp UDPのみ
-l, --listen リスニングソケット
-e, --established 確立済み接続
-4, --ipv4 IPv4のみ
-6, --ipv6 IPv6のみ
DNSおよびサービス名解決のオプション:
--resolve-addrs IPアドレスをホスト名に解決(デフォルト: true)
--resolve-ports ポート番号をサービス名に解決
--no-cache DNSキャッシュを無効(強制的に新規ルックアップ)
DNSルックアップは並列で実行され、パフォーマンスのためにキャッシュされます。アドレスが頻繁に変更されるデバッグや状況では --no-cache を使用してキャッシュをバイパスします。
より詳細なフィルタリングには、ls で key=value 構文を使用:
snitch ls proto=tcp state=listen
snitch ls pid=1234
snitch ls proc=nginx
snitch ls lport=443
snitch ls contains=google
スタイル付きテーブル(デフォルト):
╭─────────────────┬───────┬───────┬─────────────┬─────────────────┬────────╮
│ PROCESS │ PID │ PROTO │ STATE │ LADDR │ LPORT │
├─────────────────┼───────┼───────┼─────────────┼─────────────────┼────────┤
│ nginx │ 1234 │ tcp │ LISTEN │ * │ 80 │
│ postgres │ 5678 │ tcp │ LISTEN │ 127.0.0.1 │ 5432 │
╰─────────────────┴───────┴───────┴─────────────┴─────────────────┴────────╯
2 connections
プレーン出力 (-p):
PROCESS PID PROTO STATE LADDR LPORT
nginx 1234 tcp LISTEN * 80
postgres 5678 tcp LISTEN 127.0.0.1 5432
オプションの設定ファイル ~/.config/snitch/snitch.toml:
[defaults]
numeric = false # 名前解決を無効化
dns_cache = true # DNSルックアップをキャッシュ(無効にするにはfalseに設定)
theme = "auto" # カラーテーマ: auto, dark, light, mono
[tui]
remember_state = false # セッション間で表示オプションを記憶
remember_state = true の場合、TUIは以下を保存・復元します:
状態は $XDG_STATE_HOME/snitch/tui.json に保存されます(デフォルトは ~/.local/state/snitch/tui.json)。
CLIフラグは常に保存された状態よりも優先されます。
SNITCH_THEME=dark # デフォルトテーマを設定
SNITCH_RESOLVE=0 # DNS解決を無効化
SNITCH_DNS_CACHE=0 # DNSキャッシュを無効化
SNITCH_NO_COLOR=1 # カラー出力を無効化
SNITCH_CONFIG=/path/to # カスタム設定ファイルパス
/proc/net/* から読み取り、完全なプロセス情報には root または CAP_NET_ADMIN が必要