CubicLouve

Spring_MTの技術ブログ

lsofの使い方まとめてみた

github.com

lsof コマンドはプロセスがオープンしているファイルの一覧を表示します。

manには下記のように記載されている。

lsof - list open files

ファイルはディスク上のファイルだけでなく、ネットワークソケット、デバイスなども含まれるため、オープンしているファイルを調べることで、ネットワークのリッスンしているポート(待受ポート)などもわかりネットワーク周りの調査でもよく使うコマンド。

表示項目

項目 説明
COMMAND プロセス名(+c num で必要な文字数取れる)
PID プロセスID
USER 実行ユーザー
FD ファイルディスクリプター(それに続く英字1文字は r read access、w write access、u read and write access を指す)
TYPE ファイルの種別、例) IPv4IPv4 socket、LINK は symbolic link fileとか
DEVICE バイス番号
SIZE/OFF ファイルサイズまたはオフセット、0t または 0xで始まる場合はオフセット
NODE ファイルのノード番号 だったりインターネットプロトコルだったりする
NAME ファイル名だったりマウントポイント名だったり
リモートアドレス(<net>:[<node>:]<port> とそれに続いて接続状態も表示される場合もある ) だったりする

オプション

lsof(8) - Linux manual page

オプション 説明
-n 名前解決をせずにIPアドレスを表示する。名前解決をしないので高速に表示されます
-P ポート番号をポート名に変換しない。 例) 443 ポートを https に変換しない
+c プロセス名の表示数(15まで、0を指定すると最大になる)
-i ネットワークファイルのみを対象とする。色々書き方があり、-iTCP だとTCPのみ、-i:ポート番号 で利用しているポートで絞り込める
形式は→ [46][protocol][@hostname|hostaddr][:service|port]
-U Unix domain socketの一覧を取得する

よく使うコマンド

UDP一覧

lsof -n -P +c 0 -iUDP 

複数の特定ポート

lsof -n -P +c 0 -i:8080,3000