UNIXドメインソケットの通信相手(プロセス)を調べる
UNIX ドメインソケットを使っているプロセスの番号とファイルディスクリプタの番号を知りたくなったので、やり方をメモ。
以下のようにlsof
コマンドを使う。
$ sudo lsof -U +E +c 15 | grep containerd systemd 1 root 48u unix 0xffff8b1691980400 0t0 106648 /run/systemd/journal/stdout type=STREAM ->INO=104729 10894,containerd,2u 10894,containerd,1u systemd-journal 530 root 21u unix 0xffff8b1691980400 0t0 106648 /run/systemd/journal/stdout type=STREAM ->INO=104729 10894,containerd,2u 10894,containerd,1u containerd 10894 root 1u unix 0xffff8b1691983400 0t0 104729 type=STREAM ->INO=106648 530,systemd-journal,21u 1,systemd,48u containerd 10894 root 2u unix 0xffff8b1691983400 0t0 104729 type=STREAM ->INO=106648 530,systemd-journal,21u 1,systemd,48u containerd 10894 root 6u unix 0xffff8b1695092c00 0t0 105834 /run/containerd/containerd.sock type=STREAM containerd 10894 root 7u unix 0xffff8b1693019400 0t0 106727 /run/containerd/containerd.sock type=STREAM ->INO=106726 11069,dockerd,7u containerd 10894 root 8u unix 0xffff8b1693019c00 0t0 106730 /run/containerd/containerd.sock type=STREAM ->INO=106729 11069,dockerd,8u dockerd 11069 root 7u unix 0xffff8b169301b400 0t0 106726 type=STREAM ->INO=106727 10894,containerd,7u dockerd 11069 root 8u unix 0xffff8b1693018c00 0t0 106729 type=STREAM ->INO=106730 10894,containerd,8u
-U
オプションで、プロトコルをUNIXドメインソケットに限定、
+E
オプションで通信のエンドポイント情報を表示、
+c 15
は、コマンド名が省略されるのを防ぐために使用。
調べ不足かも知れないが、lsofのオプションにソケットのパス名は指定できなそうなので、grepで探している。