GNU/Linux >> Linux Esercitazione >  >> Linux

Come elencare i processi appartenenti a uno spazio dei nomi di rete?

Potresti fare qualcosa del tipo:

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

O con zsh :

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

Controlla l'inode del file che è il /proc/*/task/*/ns/net Il collegamento simbolico punta nuovamente a quelli dei file montati tramite bind da ip netns add in /run/netns . Questo è fondamentalmente ciò che ip netns identify o ip netns pid nelle versioni più recenti di iproute2 fare.

Funziona con il kernel 3.13 a partire dal linux-image-generic-lts-trusty pacchetto su Ubuntu 12.04, ma non con il kernel 3.2 dalla prima versione di 12.04 dove /proc/*/ns/* non sono collegamenti simbolici e ogni net file lì da ogni processo e attività ottiene un inode diverso che non può aiutare a determinare l'appartenenza allo spazio dei nomi.

Il supporto per questo è stato aggiunto da quel commit nel 2011, il che significa che hai bisogno del kernel 3.8 o più recente.

Con i kernel più vecchi, potresti provare ad eseguire un programma in ascolto su un socket ABSTRACT nello spazio dei nomi, quindi provare a inserire lo spazio dei nomi di ogni processo per vedere se riesci a connetterti a quel socket lì come:

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

La domanda menziona specificamente Ubuntu 12.04, ma noto che nelle distribuzioni più recenti come la 16.04 esiste un comando che fa esattamente questo:ip netns pids <nsname>


ps $(ip netns pids myns) dove myns è il tuo spazio dei nomi


Linux
  1. Linux:come elencare gli spazi dei nomi in Linux?

  2. Come accedere allo spazio dei nomi di rete di Docker Container dall'host

  3. Come elencare i processi collegati a un segmento di memoria condivisa in Linux?

  4. Come visualizzare l'elenco dei processi in esecuzione Python?

  5. Come elencare tutti i file in una condivisione di rete Windows SMB

Come elencare i gruppi in Linux

Come elencare i lavori Cron in Linux

Come utilizzare Angry IP Scanner (scanner di rete)

Come condividere la stampante in rete in Linux

Come usare il comando PS

Come riavviare la rete su Ubuntu 22.04