
네트워크 연결을 더 보기 좋게 검사하는 방법
사용자에게 더 친숙한 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,
# 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_<버전>_linux_<아키텍처>.tar.gz 또는 .deb/.rpm/.apksnitch_<버전>_darwin_<아키텍처>.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 필요mono