以下の内容はhttps://takuya-1st.hatenablog.jp/entry/2021/01/15/171550より取得しました。


lsof でIPを指定する /v4 or v6 / ポート使ってるプロセスを見る

lsof でIPを指定する

lsof で探すときに、指定したIPでリッスンしているものを見たいときにどうするのか、複数のIPがあると明示的に指定したいですね。

ポートを使ってるプロセスを見る

たとえば、22番を使ってるプロセスを探す。

lsof -i :22 -n

実例

$lsof -i :22 -n
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dropbear  3272 root    3u  IPv4    618      0t0  TCP 192.168.1.1:ssh (LISTEN)
dropbear 18793 root    0u  IPv4 853114      0t0  TCP 192.168.1.1:ssh->172.16.4.3:54401 (ESTABLISHED)

ip を@マークで指定する。

lsof では @マークで ip アドレスを指定することができる。

アドレス指定

lsof -i @192.168.1.201

アドレス・ポート指定

lsof -i @192.168.1.201:10000

IPv6の場合

いい感じに囲む必要がある。

ls of -i @[2001::::97c]:22

また、v6のIPすべてでリッスンしている場合は、次のようにv4/v6ともに具体的なIPなく表示される。

$sudo lsof -i :22
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     946   root    5u  IPv4  23026      0t0  TCP *:ssh (LISTEN)
sshd     946   root    6u  IPv6  23028      0t0  TCP *:ssh (LISTEN)

実際にやってみた例。

アドレス・ポート指定でどのアプリがリッスンしているか見ることができた。

root@jitsi:~# lsof -i @10.185.93.136:3479
COMMAND  PID      USER  FD  TYPE  DEVICE SIZE/OFF NODE NAME
turnserve 569 turnserver  36u  IPv4 17368603      0t0  UDP jitsi.lxd:3479
turnserve 569 turnserver  37u  IPv4 17368604      0t0  UDP jitsi.lxd:3479
turnserve 569 turnserver  38u  IPv4 17368605      0t0  UDP jitsi.lxd:3479
turnserve 569 turnserver  39u  IPv4 17368606      0t0  UDP jitsi.lxd:3479
root@jitsi:~# lsof -i @10.185.93.136:10000
COMMAND  PID USER  FD  TYPE  DEVICE SIZE/OFF NODE NAME
java    1341  jvb  155u  IPv6 17592832      0t0  UDP jitsi.lxd:10000

ss コマンドとの違い

lsof だと「プロセス」を探すので、wireguardのようなカネールモジュールのリッスンは見えない。

該当プロセスが見つからないとき、正確にポートをリッスンしているかどうかをみたいなら ss -nlu(udp) ss -nlt (tcp)を使ってもいいと思う。

2023-04-19 追記

IPv6の場合について追記。

2023-05-16 追記

ポートのみの場合と、ssとの違いについて言及




以上の内容はhttps://takuya-1st.hatenablog.jp/entry/2021/01/15/171550より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14