📘

netstat/ss/lsof/fuserコマンドまとめ

2024/11/23に公開

自分用にnetstat/ss/lsof/fuserコマンドについてまとめてみた。

ネットワークファイル(ソケット)の一覧を表示する

$ sudo lsof -i
  • これが一番分かりやすい

ネットワーク接続に関する情報を表示する

TCP接続の場合

$ sudo netstat -nta
$ sudo ss -nta

UDP接続の場合

$ sudo netstat -nua
$ sudo ss -nua

ssはnetstatの代替コマンド

指定したプロセスが使用しているポートを表示する

$ sudo lsof -i | grep <コマンド名>
$ sudo lsof -i | grep sshd

指定したプロセスが使用しているリソースの一覧を表示する

$ sudo lsof -p <プロセスID>
$ sudo lsof -p 411
  • リソースには、開いているファイル、ソケット、ディレクトリ、デバイスなどが含まれる

lsofがインストールされていない場合、以下である程度確認できる

$ sudo ls -al /proc/<プロセスID>/fd
$ sudo ls -al /proc/411/fd

指定したポートを使用しているプロセスを表示する

$ sudo lsof -i:<ポート番号>
$ sudo lsof -i:22
$ sudo lsof -i tcp:22
$ sudo lsof -i udp:22
  • コマンド名が分かる
$ sudo netstat -ntap | grep <ポート番号>
$ sudo netstat -ntap | grep 22
$ sudo netstat -ntlp | grep 22
  • コマンド名が分かる
  • -a: display all sockets (default: connected)
  • -l: display listening server sockets
  • -p: display PID/Program name for sockets
$ sudo ss -ntap | grep <ポート番号>
$ sudo ss -ntap | grep 22
$ sudo ss -ntlp | grep 22
  • コマンド名が分かる
  • -a: display all sockets
  • -l: display listening sockets
  • -p: show process using socket
$ sudo fuser <ポート番号>/tcp
$ sudo fuser 22/tcp
  • プロセスIDが分かる
$ sudo fuser -n tcp <ポート番号> -uv
$ sudo fuser -n tcp 22 -uv
  • コマンド名が分かる
  • -n: search in this name space (file, udp, or tcp)
  • -u: display user IDs
  • -v: verbose output

指定したファイルを使用しているプロセスを表示する

$ sudo fuser -uv <ファイルパス>
$ sudo fuser -uv /dev/null
  • コマンド名が分かる

ウェルノウンポートを表示する

$ cat /etc/services

Discussion