GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara membuat daftar proses milik ruang nama jaringan?

Anda dapat melakukan sesuatu seperti:

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

Atau dengan zsh :

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

Itu memeriksa inode dari file yang /proc/*/task/*/ns/net symlink menunjuk ke file-file yang di-mount-bind oleh ip netns add di /run/netns . Pada dasarnya itulah ip netns identify atau ip netns pid di versi iproute2 yang lebih baru lakukan.

Itu berfungsi dengan kernel 3.13 mulai dari linux-image-generic-lts-trusty paket di Ubuntu 12.04, tetapi tidak dengan kernel 3.2 dari rilis pertama 12.04 di mana /proc/*/ns/* bukan symlink dan masing-masing net file di sana dari setiap proses dan tugas mendapatkan inode berbeda yang tidak dapat membantu menentukan keanggotaan namespace.

Dukungan untuk itu ditambahkan oleh komit tersebut pada tahun 2011, yang berarti Anda memerlukan kernel 3.8 atau yang lebih baru.

Dengan kernel yang lebih lama, Anda dapat mencoba dan menjalankan program mendengarkan pada soket ABSTRACT di namespace, lalu mencoba memasukkan namespace setiap proses untuk melihat apakah Anda dapat terhubung ke soket tersebut di sana seperti:

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

Pertanyaannya secara khusus menyebutkan Ubuntu 12.04, tetapi saya perhatikan bahwa pada distro yang lebih baru seperti 16.04 ada perintah yang melakukan hal ini:ip netns pids <nsname>


ps $(ip netns pids myns) di mana myns adalah ruang nama Anda


Linux
  1. Bagaimana cara mendaftar proses yang dilampirkan ke segmen memori bersama di linux?

  2. Bagaimana cara menampilkan daftar proses yang berjalan Python?

  3. Bagaimana cara memindahkan koneksi nirkabel ke namespace jaringan lain?

  1. Linux – Bagaimana Cara Mendaftar Namespace Di Linux?

  2. Cara Mengakses Namespace Jaringan Docker Container dari Host

  3. Cara mendaftar semua file di jaringan berbagi Windows SMB

  1. Cara Mendaftar Semua Basis Data di PostgreSQL

  2. Cara Menggunakan Perintah SS Linux

  3. Cara Mendaftar Proses yang Berjalan di Linux