setns 切换命名空间,/proc 目录与 Namespace
http://man7.org/linux/man-pages/man2/setns.2.html
int setns(int fd, int nstype);
Given a file descriptor referring to a namespace, reassociate the calling thread with that namespace.
当前线程切到fd对应的namespace,并且这个线程上下文中创建的新线程也在这个namespace。
fd
:要加入的 namespace 的文件描述符,一般为/proc/[pid]/ns
下某个对应类型 namespace 的软链接;nstype
:调用进程想要加入的 namesapce 的类型,其类型对应上文的表格中的 7 种 Namespace 类型:0
:允许加入任何类型的 namespace;CLONE_NEWCGROUP
:fd
必须指向一个 cgroup 的 namespace;CLONE_NEWIPC
:fd
必须指向一个 IPC 的 namespace;CLONE_NEWNET
:fd
必须指向一个 network 的 namespace;CLONE_NEWNS
:fd
必须指向一个 mount 的 namespace;CLONE_NEWPID
:fd
必须指向一个 pid 的 namespace;CLONE_NEWUSER
:fd
必须指向一个 user 的 namespace;CLONE_NEWUTS
:fd
必须指向一个 UTS 的 namespace;
/proc
目录与 Namespace
除了 3 个 API 之外,还需要关注 /proc
目录。
自 Linux 3.8 开始,用户就可以在 /proc/[pid]/ns
目录下看到指向不同 namespace 号的文件,如:
1 |
# ls -l /proc/$$/ns |
每一个进程在其对应的 /proc/[pid]/ns
下都有其 namespace 信息,该目录下每一个文件都是一个软链接,setns()
可以通过打开对应进程下的 ns 目录下的软链接文件来加入到对应的 namespace 中。
该目录下的每个软链接的内容其实是一串字符,由 namespace 类型和 inode number 组成:
1 |
# readlink /proc/$$/ns/uts |
且满足以下几个条件:
若几个进程中对应 namespace 软链接内容一致,则这几个进程同属于同一个 namespace;
即使 namespace 中的进程全部终结了,只要其软链接文件一直处于 open 状态,则 namespace 将一直存在;
参考:https://zhengyinyong.com/introduction-to-linux-namespace.html
setns 切换命名空间,/proc 目录与 Namespace的更多相关文章
- Linux中/proc目录下文件详解
转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...
- Linux下/proc目录简介
文章转载至:http://blog.csdn.net/zdwzzu2006/article/details/7747977 1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在 ...
- Linux下/proc目录简介(转)
1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...
- Linux系统的/proc目录
1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机 制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它 ...
- Linux下/proc目录的作用
文章是摘抄过来,方便自己查阅! 1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在 ...
- linux /proc目录
1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...
- linux /proc目录说明(访问内核数据结构,修改内核设置)
1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以 ...
- /proc 目录详细说明
/proc路径详细: Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以 ...
- Linux下的/proc目录介绍
proc被称为虚拟文件系统,它是一个控制中心,可以通过更改其中某些文件改变内核运行状态, 它也是内核提空给我们的查询中心,用户可以通过它查看系统硬件及当前运行的进程信息. Linux中许多工具的数据来 ...
随机推荐
- Vue学习之品牌案例部分代码小结(二)
品牌案例的增删查和其他部分效果: <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- Python之路(第四十二篇)线程相关的其他方法、join()、Thread类的start()和run()方法的区别、守护线程
一.线程相关的其他方法 Thread实例对象的方法 # isAlive(): 返回线程是否活动的. # getName(): 返回线程名. # setName(): 设置线程名. threadin ...
- kbmmw 中使用带验证的REST 服务
前面介绍的rest 服务,虽然很方便,但是存在任何人都可以访问的安全问题. 今天说一下,如何在kbmmw 中使用带验证的REST 服务? 首先我们在工程中放一个 认证控件TkbmMWAuthoriza ...
- prometheus学习系列八: Prometheus Grafana展示平台
在prometheus中,我们可以使用web页面进行数据的查询和展示, 不过展示效果不太理想,这里使用一款专业的展示平台进行展示. grafana安装 # 下载wget https://dl.graf ...
- 【异常】Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30005ms.
一.异常出现的场景 一次线上订单历史数据字段刷新操作,3张表100多万数据.由于同步更新太慢大概20分钟以上,所以采用异不的方式.代码如下: private void batchUpdate(List ...
- centos7上安装zabbix3.4的详细步骤与问题处理记录
zabbix是linux运维工作中经常用到的开源工具,话不多说,直接开始正式的安装配置环境.1.安装环境 centos7 服务端:192.168.200.100 客户端:192.168.200.200 ...
- JVM垃圾收集算法之清除算法
最近看了一些大佬的博文,文中提到说:学习知识不能一味的死学滥学,在学之前要明白为什么要学这个知识,在实际的应用中怎么运用这个知识.我觉得说的很对,很多时候我学习确实是了解了这是什么原理,但是要说到实际 ...
- 项目Beta冲刺--1/7
项目Beta冲刺--1/7 作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Beta冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及 ...
- Java-Modifier类常用方法详解
一.Modifier类的定义 Modifier类 (修饰符工具类) 位于 java.lang.reflect 包中,用于判断和获取某个类.变量或方法的修饰符Modifier类将各个修饰符表示为相对应的 ...
- PHP - assert()
Find and exploit the vulnerability to read the file .passwd.-------------查找并利用此漏洞读取文件.passwd. assert ...