GNU/Linux >> Znalost Linux >  >> Linux

Jak vypsat procesy patřící do síťového jmenného prostoru?

Můžete udělat něco jako:

netns=myns
find -L /proc/[1-9]*/task/*/ns/net -samefile /run/netns/"$netns" | cut -d/ -f5

Nebo pomocí zsh :

print -l /proc/[1-9]*/task/*/ns/net(e:'[ $REPLY -ef /run/netns/$netns ]'::h:h:t)

Zkontroluje inode souboru, který má /proc/*/task/*/ns/net symbolický odkaz ukazuje na proti těm souborům připojeným pomocí ip netns add v /run/netns . To je v podstatě to, co ip netns identify nebo ip netns pid v novějších verzích iproute2 udělat.

To funguje s jádrem 3.13 od linux-image-generic-lts-trusty balíček na Ubuntu 12.04, ale ne s jádrem 3.2 z prvního vydání 12.04, kde /proc/*/ns/* nejsou symbolické odkazy a každý net soubor z každého procesu a úlohy získá jiný inode, který nemůže pomoci určit příslušnost k jmennému prostoru.

Podpora pro to byla přidána tímto odevzdáním v roce 2011, což znamená, že potřebujete jádro 3.8 nebo novější.

Se staršími jádry můžete zkusit spustit program naslouchající na soketu ABSTRACT ve jmenném prostoru a pak zkusit zadat jmenný prostor každého procesu, abyste zjistili, zda se tam můžete připojit k tomuto soketu, jako:

sudo ip netns exec "$netns" socat abstract-listen:test-ns,fork /dev/null &
ps -eopid= |
  while read p; do
    nsenter -n"/proc/$p/ns/net" socat -u abstract:test-ns - 2> /dev/null &&
      echo "$p"
  done

Otázka konkrétně zmiňuje Ubuntu 12.04, ale podotýkám, že na novějších distribucích, jako je 16.04, existuje příkaz, který dělá přesně toto:ip netns pids <nsname>


ps $(ip netns pids myns) kde myns je váš jmenný prostor


Linux
  1. Jak získat přístup k síťovému jmennému prostoru Docker Container z hostitele

  2. Jak vypsat seznam procesů připojených k segmentu sdílené paměti v linuxu?

  3. Jak zobrazit seznam všech souborů ve sdílené síťové složce Windows SMB

  1. Linux – Jak vypsat jmenné prostory v Linuxu?

  2. Jak zobrazit seznam běžících procesů Python?

  3. Jak přesunout bezdrátové připojení do jiného síťového jmenného prostoru?

  1. Jak vypsat všechny databáze v PostgreSQL

  2. Jak používat příkaz Linux SS

  3. Jak vypsat běžící procesy v Linuxu