Linux上のNetwork Namespace一覧を確認する

最近コンテナ触ってると、どのプロセスがどのネームスペースで動いているのか確認したくなります。コンテナのネームスペースをコンテナ毎に調べてもいいですが、実はpsコマンドで見ることができます。

具体的には、-o オプション使って以下のように実行すれば、ネットワークネームスペースとPID,コマンド等を見ることができます。ちなみにNETNSの数字はinode番号を意味しています。

# ps -e -o netns,pid,cmd
 NETNS PID PPID CMD
4026531957 1 0 /sbin/init splash
4026531957 2 0 [kthreadd]
4026531957 3 2 [ksoftirqd/0]
4026531957 5 2 [kworker/0:0H]
4026531957 7 2 [rcu_sched]
4026531957 8 2 [rcu_bh]
4026531957 9 2 [migration/0]
4026531957 10 2 [watchdog/0]
4026531957 11 2 [watchdog/1]
4026531957 12 2 [migration/1]
4026531957 13 2 [ksoftirqd/1]
4026531957 15 2 [kworker/1:0H]
4026531957 16 2 [kdevtmpfs]
4026531957 17 2 [netns]
4026531957 18 2 [perf]
4026531957 19 2 [khungtaskd]
4026531957 20 2 [writeback]
4026531957 21 2 [ksmd]
~以下略~

 

プロセスツリーみたければ、pstree でも見ることができます。以下はKubernetesが動いている環境で実行した時の例ですが、このようにネームスペース毎にプロセスツリーを表示してくれます。

# pstree -N net
~ 略 ~
[4026532229]
dashboard───7*[{dashboard}]
pause
[4026532441]
pause
bash
[4026532514]
pause
server───6*[{server}]
[4026532580]
pause
dumb-init───nginx-ingress-c─┬─nginx───2*[nginx───32*[{nginx}]]
 └─10*[{nginx-ingress-c}]
[4026532359]
pause
kube-dns───8*[{kube-dns}]
dnsmasq-nanny─┬─dnsmasq
 └─8*[{dnsmasq-nanny}]

 

タイトルとURLをコピーしました