GNU/Linux >> Belajar Linux >  >> Linux

Linux – Bagaimana Cara Mendaftar Namespace Di Linux?

Apakah ada metode di Linux untuk mendaftar semua ruang nama di Host yang sedang berjalan? Saya perlu memeriksa ruang nama untuk proses tertentu (misalnya proses yang berjalan di LXC-container dan semua proses lain di host) dan kemudian mencari tahu cgroup dari mereka.

Jawaban yang Diterima:

Utilitas untuk bekerja dengan ruang nama telah meningkat sejak pertanyaan ini diajukan pada 2013.

lsns dari paket util-linux dapat membuat daftar semua jenis ruang nama yang berbeda, dalam berbagai format yang berguna.

# lsns --help

Usage:
 lsns [options] [<namespace>]

List system namespaces.

Options:
 -J, --json             use JSON output format
 -l, --list             use list format output
 -n, --noheadings       don't print headings
 -o, --output <list>    define which output columns to use
 -p, --task <pid>       print process namespaces
 -r, --raw              use the raw output format
 -u, --notruncate       don't truncate text in columns
 -t, --type <name>      namespace type (mnt, net, ipc, user, pid, uts, cgroup)

 -h, --help     display this help and exit
 -V, --version  output version information and exit

Available columns (for --output):
          NS  namespace identifier (inode number)
        TYPE  kind of namespace
        PATH  path to the namespace
      NPROCS  number of processes in the namespace
         PID  lowest PID in the namespace
        PPID  PPID of the PID
     COMMAND  command line of the PID
         UID  UID of the PID
        USER  username of the PID

For more details see lsns(8).

lsns hanya mencantumkan PID terendah untuk setiap proses – tetapi Anda dapat menggunakan PID tersebut dengan pgrep jika Anda ingin membuat daftar semua proses milik namespace.

misalnya jika saya menjalankan gitlab di buruh pelabuhan dan ingin menemukan semua proses yang berjalan di namespace itu, saya dapat:

# lsns  -t pid -o ns,pid,command  | grep gitlab
  4026532661   459 /opt/gitlab/embedded/bin/redis-server 127.0.0.1:0

dan, kemudian gunakan pid itu (459) dengan pgrep :

# pgrep --ns 459 -a
459 /opt/gitlab/embedded/bin/redis-server 127.0.0.1:0
623 postgres: gitlab gitlabhq_production [local] idle
[...around 50 lines deleted...]
30172 nginx: worker process

Saya juga bisa menggunakan id namespace (4026532661) dengan ps , misalnya:

ps -o pidns,pid,cmd | awk '$1==4026532661'
[...output deleted...]

Linux
  1. Demystifying namespace dan container di Linux

  2. Cara Mengelola dan Mendaftar Layanan di Linux

  3. 7 namespace Linux yang paling banyak digunakan

  1. Cara Menggunakan Perintah SS Linux

  2. Cara Mendaftar Proses yang Berjalan di Linux

  3. Cara Mendaftar Semua Paket yang Terinstal Di Linux

  1. Cara Mendaftar Pengguna di Linux

  2. Cara Mendaftar Grup di Linux

  3. Cara Mendaftar Pekerjaan Cron di Linux