読者です 読者をやめる 読者になる 読者になる

俺得なLinuxの名前空間を調べるツール作成中

linux

他に使う人がいない気もするがなんとなく作っているものがこれ。

github.com

現状できるのは

  • 個々の名前空間に所属しているプロセス名、PIDなどを表示(-aオプション)

  • あるPIDが所属している名前空間(inode)の表示(-pオプション)

  • 名前空間が参照されている数(-cオプション)

出力のサンプルがどんなものかというと、-aオプションの出力の一部が↓。

net: inode: 4026532326
               pid            ppid      comm
               988               1      rtkit-daemon
net: inode: 4026532508
               pid            ppid      comm
              1439            1344      chrome
              1457            1439      chrome
              1646            1457      chrome
              1659            1457      chrome
              1667            1457      chrome
              1683            1457      chrome
              1748            1457      chrome
              7272            1457      chrome
              7393            1457      chrome
              7750            1457      chrome
              8445            1457      chrome
net: inode: 4026532568
               pid            ppid      comm
              1445            1439      nacl_helper
uts: inode: 4026531838
               pid            ppid      comm
                 1               0      systemd

これだとnet名前空間のinode4026532326に所属しているのはrtkit-daemon4026532568のほうはchromeって感じ。 というように、名前空間の一つのデータ(上の場合はstruct net。ust名前空間ならstruct uts_namespace)ごとに所属しているプロセスの情報表示。

PID別にだす-cの場合は単純にこう。

masami@saga:~/codes/nsinfo (master)$ sudo ./nsinfo.rb -p 988
Process 988 : rtkit-daemon
          net   4026532326
          uts   4026531838
          ipc   4026531839
          pid   4026531836
         user   4026531837
          mnt   4026531840

数える場合はこんな感じで。

masami@saga:~/codes/nsinfo (master)$ sudo ./nsinfo.rb -c
net: namespace
        inode:4026531969 : 251
        inode:4026532326 : 1
        inode:4026532508 : 10
        inode:4026532568 : 1
        Total : 263
uts: namespace
        inode:4026531838 : 263
        Total : 263
ipc: namespace
        inode:4026531839 : 263
        Total : 263
pid: namespace
        inode:4026531836 : 252
        inode:4026532506 : 2
        inode:4026532566 : 1
        inode:4026532631 : 1
        inode:4026532632 : 1
        inode:4026532633 : 1
        inode:4026532635 : 1
        inode:4026532637 : 1
        inode:4026532386 : 1
        inode:4026532385 : 1
        inode:4026532383 : 1
        Total : 263
user: namespace
        inode:4026531837 : 252
        inode:4026532625 : 10
        inode:4026532624 : 1
        Total : 263
mnt: namespace
        inode:4026531840 : 258
        inode:4026531857 : 1
        inode:4026532201 : 1
        inode:4026532313 : 1
        inode:4026532442 : 1
        inode:4026532502 : 1
        Total : 263

こちらは名前空間ごとに、どのinode(最終的にはstruct uts_namespaceとか)にどんだけの参照数があるか数えてます。

とりあえずコードは汚いので直したい/(^o^)\

Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!] (Software Design plus)

Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!] (Software Design plus)