Điểm:5

Linux liệt kê tất cả các không gian tên mạng

lá cờ za

Tôi muốn liệt kê tất cả các không gian tên mạng trên máy Linux của mình. Cho đến nay tôi đã tìm thấy hai cách được đề xuất để làm điều này:

danh sách mạng ip

lsns --type=net

Thật không may, cả hai lệnh không liệt kê tất cả các không gian tên! Cái đầu tiên chỉ liệt kê các không gian tên được tìm thấy trong /var/run/netns và cái thứ hai sẽ chỉ tìm thấy các không gian tên có ít nhất một tiến trình đang chạy trong đó. Ví dụ: Docker sẽ lưu các không gian tên của nó trong /var/run/docker/netns (vì vậy chúng không được hiển thị bởi ip netns) và có một số không gian tên không có quy trình đang chạy (vì vậy chúng không được hiển thị bởi lsns). Có lệnh nào in TẤT CẢ các không gian tên mạng trên Máy chủ không?

A.B avatar
lá cờ cl
A.B
liên quan: https://unix.stackexchange.com/questions/505112/how-do-i-find-all-interfaces-that-have-been-configured-in-linux-include-those
Garuno avatar
lá cờ za
Vì vậy, không có công cụ sẵn có để làm điều này? Tôi phải quét hệ thống tệp/proc để lấy tất cả các không gian tên?
Điểm:0
lá cờ mx

Để bao gồm các không gian tên mạng của các bộ chứa docker đang chạy vào danh sách mạng ip bạn chỉ có thể đặt một liên kết tượng trưng (còn gọi là liên kết mềm) như thế này:

ln -Ts /var/run/docker/netns /var/run/netns

Thật không may, không có lệnh chung trong linux để liệt kê tất cả các không gian tên mạng. Bạn có thể sử dụng tập lệnh python sau để liệt kê ít nhất tất cả các không gian tên được liên kết trong /var/run/netns: https://github.com/Intika-Linux-Namespace/Namespace-Lister

Đối với các ứng dụng sử dụng các đường dẫn khác, bạn sẽ phải sửa đổi tập lệnh này.

Garuno avatar
lá cờ za
Điều này sẽ chỉ giải quyết Vấn đề cho trường hợp Docker cụ thể. Làm cách nào để biết liệu có bất kỳ ứng dụng nào khác đang tạo không gian tên ở các vị trí khác không?
digijay avatar
lá cờ mx
Xin chào @Garuno, hãy xem bản chỉnh sửa của tôi. Dường như không có giải pháp chung nào cho vấn đề này, nhưng ít nhất là một tập lệnh mà bạn có thể điều chỉnh để phục vụ nhu cầu của mình. Hy vọng nó giúp!
Điểm:0
lá cờ cn

Không theo tên, nhưng bạn có thể tìm thấy tất cả các không gian tên được sử dụng bằng cách xem /proc/{PID}/ns/net

Tập lệnh này (chạy với quyền root) hiển thị danh sách ID không gian tên mạng đã sử dụng trên máy:

tìm /proc/ -name ns 2>/dev/null |xargs -I NS ls -la NS/net 2> /dev/null| awk -F '->' '{print $2}'|sort -u
A.B avatar
lá cờ cl
A.B
không gian tên chỉ gắn kết sẽ không được tìm thấy
George Shuklin avatar
lá cờ cn
Có, thủ thuật này chỉ hoạt động với các không gian tên được sử dụng bởi các quy trình.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.