linux下的namespace

inux系统里面是不是只能有一个PID为1的进程(init进程,创始进程)

lsns:查看当前bash的那么namespace

重新启动一个namespace
unshare --fork --pid --mount-proc bash

新的进程后旧的进程会共享usr uts  net ipc,但是它们的mnt 和pid 是不一样的,文件系统上是隔离和PID不一样

linux的namespace机制
进程1  进程2  进程1  进程2
namespace1    namespace2
        linux内核
        硬件
        
linux下namesapce机制提供一种资源隔离和虚拟化的特性,PID IPC,Network等系统资源不再是全局的,而是属于某个特定的Namespace
每个Namespace下的资源对于其他Namespace下的资源都是不可见的。
因此在操作系统层面上看,就会出现多个相同PID进程。
系统中可以同时存在两个甚至多个进程为0、1、2的进程,由于属于不同的Namespace,所以他们之间并不冲突。
而在用户层面上看到用户自己Namespace下的资源,例如使用ps命令只能列出自己Namespace下的进程。
这样每个Namespace看上去就像一个单独额linux系统

namespace      系统调用参数     隔离内容                        内核版本
UTS                CLONE_NEWUTS    主机名和域名                    2.6.19
IPC                CLONE_NEWIPC    信号量、消息队列和共享内存        2.6.19
PID                CLONE_NEWPID    进程编号                        2.6.24
Network            CLONE_NEWNET    网络设备、网络栈、端口            2.6.29
Mount            CLONE_NEWNS        挂载点(文件系统)                2.6.19
User            CLONE_NEWUSER    用户和用户组                    3.8

namespace还是有层级的概念:高级别的namespace可以被低级别的namespace看到
高级别的进程有多个PID。
比如说系统默认namespace镜子为level0,在level0下创建了一个新的namespace叫做level1,在level中运行了一个进程。
在level中这个进程的PID为1 ,因为高级别的pid namespace需要被低级别的pid namespace看见,所以这个进程中在leve0中为PID xxx
而xxx这个pid编号是按照leve0里的pid序列而分配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值