Linux unshare命名的一些例子

简介: Linux unshare命名的一些例子

首先使用man查看unshare帮助:


image.png


run program with some namespaces unshared from parent


看下这几个参数的功能。


–fork:

执行unshare的进程fork一个新的子进程,在子进程里执行unshare传入的参数


image.png


–pid:


不从父进程继承pid命名空间。也就是说,在子进程内执行ps,无法看到父进程原有的进程。


image.png


–mount-proc: 这个先不解释。

image.png



执行命令:

sudo unshare --fork --pid --mount-proc bash


注意到share提示符从vagrant变成了root。


image.png


此时在生成的子进程里,whoami返回root。



image.png

从父进程的命令ps -ejf不能看出这个父子进程关系:


image.png


因为子进程已经隔离了pid namespace,所以子进程的ps 无法看到父进程里能看到的那些进程列表。


image.png


最后来看–mount-proc:


这个选项能确保创建了 PID 和 Mount namespace 后,自动挂载 /proc 文件系统,无需我们手动执行 mount -t proc proc /proc 命令。


父进程10945对应的/proc/10945:


image.png


子进程的/proc文件夹下面,看不到父进程pid对应的文件夹:

image.png

这个unshare也是Linux容器工作的基础之一。

相关文章
|
Unix Linux Windows
【Linux】—— 命名管道详解
【Linux】—— 命名管道详解
|
1月前
|
缓存 Unix Linux
进程间通信之匿名管道和命名管道的理解和实现【Linux】
进程间通信之匿名管道和命名管道的理解和实现【Linux】
|
6月前
|
Linux
Linux命名管道进程通信
Linux命名管道进程通信
30 0
|
3天前
|
Linux
【linux进程间通信(一)】匿名管道和命名管道
【linux进程间通信(一)】匿名管道和命名管道
|
3月前
|
Unix Linux C语言
Linux | 创建 | 删除 | 查看 | 基本命名详解(二)
Linux | 创建 | 删除 | 查看 | 基本命名详解(二)
|
3月前
|
人工智能 Unix Linux
Linux | 创建 | 删除 | 查看 | 基本命名详解(一)
Linux | 创建 | 删除 | 查看 | 基本命名详解(一)
|
8月前
|
Linux
Linux进程通信 ---匿名/命名管道 --- 共享内存(一)
Linux进程通信 ---匿名/命名管道 --- 共享内存(一)
82 0
|
4月前
|
存储 小程序 Linux
Linux进程间通信【命名管道】
Linux进程间通信【命名管道】
43 0
|
4月前
|
存储 Unix Shell
Linux【脚本 04】Shell脚本传递参数的4种方式(位置参数、特殊变量、环境变量和命名参数)实例说明
Linux【脚本 04】Shell脚本传递参数的4种方式(位置参数、特殊变量、环境变量和命名参数)实例说明
185 0
|
4月前
|
存储 消息中间件 监控
【Linux学习】进程间通信的方式(匿名管道、命名管道、共享内存)2
【Linux学习】进程间通信的方式(匿名管道、命名管道、共享内存)
51 0