January 5, 2020

namespace 一覧とそのプロセスを表示する lsns が便利

lsns というコマンドがあり、namespace 一覧を表示できる。

特定のコンテナ(正しくは namespace だけど)のプロセス一覧を表示することも可能なので便利。

ソースは https://github.com/karelzak/util-linux/blob/master/sys-utils/lsns.c

実装的には /proc/${pid}/ns 配下の inode 番号を取得しているだけっぽい。

$ docker run --rm -it alpine:latest sleep 500

$ sudo lsns
        NS TYPE   NPROCS   PID USER            COMMAND
4026531835 cgroup     99     1 root            /sbin/init
4026531836 pid        98     1 root            /sbin/init
4026531837 user       99     1 root            /sbin/init
4026531838 uts        98     1 root            /sbin/init
4026531839 ipc        98     1 root            /sbin/init
4026531840 mnt        94     1 root            /sbin/init
4026531860 mnt         1    15 root            kdevtmpfs
4026531992 net        98     1 root            /sbin/init
4026532161 mnt         1   493 root            /lib/systemd/systemd-udevd
4026532162 mnt         1   559 systemd-network /lib/systemd/systemd-networkd
4026532172 mnt         1   601 systemd-resolve /lib/systemd/systemd-resolved
4026532197 mnt         1  1524 root            sh
4026532198 uts         1  1524 root            sh
4026532199 ipc         1  1524 root            sh
4026532200 pid         1  1524 root            sh
4026532202 net         1  1524 root            sh

$ sudo lsns 4026532200
  PID  PPID USER COMMAND
 1524  1499 root sh
 1587  1524 root └─sleep 500
このエントリーをはてなブックマークに追加

© Kouhei Morita 2018