Как вывести список процессов, принадлежащих сетевому пространству имен?

Команде find требуются пути для поиска. Если мы ничего не укажем, он использует текущий каталог (. ) в качестве начальной точки. Точно так же, если вы передадите путь, например / tmp , он будет считать его своей отправной точкой. И поэтому результаты.

Если текущий каталог:

        $ find
or
        $ find .

output:
        ./file1
        ./file2
        ./file3

Если / tmp каталог:

        $ find /tmp

output:
        /tmp/file4
        /tmp/file5

Если abc каталог в текущем каталоге:

        $ find abc

output:
        abc/file6
        abc/file7

Если в текущем каталоге несколько каталогов:

        $ find fu bar

output:
        fu/file10
        fu/file11
        bar/file8
        bar/file9
​​
9
04.06.2020, 01:27
4 ответа

Когда я работал внутри контейнера, а не снаружи, я обнаружил, что трюк с -samefile, к сожалению, не сработал. Не уверен, почему, поскольку это был тот же индексный дескриптор. В любом случае, это сработало, на всякий случай, если это кому-нибудь пригодится:

netns=mynamespace
inode=$(ls -i /var/run/netns/$netns | cut -f1 -d" ")
pids=$(find -L /proc/[1-9]*/task/*/ns/net -inum $inode | cut -f3 -d"/" | uniq)
ps -p $pids
0
20.08.2021, 12:29

В вопросе конкретно упоминается Ubuntu 12.04, но я заметил, что в более новых дистрибутивах, таких как 16.04, есть команда, которая делает именно это: ip netns pids

3
20.08.2021, 12:29

ps $(ip netns pids myns)где myns— ваше пространство имен

4
20.08.2021, 12:29

Пространство имен -Листер:

Вы можете использоватьlistns.pyс:./listns.pyили python2 listns.py(источник:github -зеркало и статья; все кредиты принадлежат Ральфу Трежечаку)

IP-адрес -Сеть:

Можно сделать следующим образом: (заменить $namespace -name):

ip netns pids $namespace-name | xargs ps -o pid,command -p

Нсутилс

Укажите netnslist, в котором перечислены все сетевые пространства имен и все процессы, запущенные в каждом пространстве имен.:

1
20.08.2021, 12:29

Теги

Похожие вопросы