lsof
- Unix系で広く使えるサードパーティコマンド。
- 便利すぎるのと、マニュアルが複雑すぎて意味不明なので、あまり効果がわかってない。
- なのでイディオムをいくつか覚えてけばよい。
- どうせ全ては使いこなせない(爆)。
削除したにも関わらずディスク領域が開放されないときに調査する
lsof | fgrep deleted
インターネットサービスを調査する
lsof -nPi
- 「-n -P」(-nP) オプションはそれぞれ以下を意味する。
- -n はIPアドレスの逆引きをしない。
- -P はポート番号をポート名に変換しない。
- この場合の肝は「-i」オプション。引数を要求するので、他にオプションを加えたいときは分けること。
- これは例えば「-inP」のような指定はできない。「-nPi」か「-Pni」としておくのが安全。
- 「-i引数」(または -i 引数)の場合、以下の指定ができる。
- 「4」「6」→IPv4またはIPv6でサービスしているもの。両方とも指定が無いときはIPv4/IPv6問わず。
- 「tcp」「udp」→TCPまたはUDPでサービスしているもの(IPv4/IPv6問わず)。両方とも指定が無いときはTCP/UDP問わず。
- 「@ホスト名」「@ホストアドレス」→@の指定は必須。指定したIPアドレスでサービスしているもの。指定が無いときは全てのアドレスが対象となる。
- 「:ポート名」「:ポート番号」→:の指定は必須。サービス名(ポート名)でサービスしているもの。指定が無いときは全てのサービスが対象となる。
SSHサービスの検索
lsof -nPi:ssh
ローカルサービスの検索
lsof -nPi@localhost
TCPサービスの検索
lsof -nPitcp
置き換え
バッチ処理等での指定はともかく、調査等で人間の目で見て判断するなら、以下のコマンドを
- sockstat(1):全部置き換え可能。
- netstat(1):-finet / -finet6 オプション辺りは置き換え可能。
- ss(1):悪名高い(?)net-tools のコマンド。これ覚える前に lsof に慣れたので、自分は使ったことがない。