Linux命名空间简述

这篇具有很好参考价值的文章主要介绍了Linux命名空间简述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、命名空间简介

二、命名空间分类

三、如何创建命名空间

四、Linux可以自动为系统服务创建独立的命名空间


一、命名空间简介

在传统的LIinux系统上,系统资源都是全局的,比如pid、文件、网络等,为了支持容器虚拟化,Linux内核有NameSpace机制,它可以把一组进程的资源隔离起来,比如使用将进程自己的文件映射到特定目录下,不与其他命名空间下的进程共享。

二、命名空间分类

Linux的NameSpace主要分为以下几种:

1、IPC:从2.6.19内核开始,IPC NameSpace用于隔离进程间通讯所需的资源,PID命名空间和IPC命名空间可以组合起来用,只有同一个IPC NameSpace内的进程才进行交互,不同空间进程无法交互;

2、Network:从2.6.24内核开始,Network Namespace为进程提供了一个完全独立的网络协议栈的视图。包括网络设备接口,IPv4和IPv6协议栈,IP路由表,防火墙规则,sockets等等。一个Network Namespace提供了一份独立的网络环境,就跟一个独立的系统一样。

3、Mount:从2.4.19内核开始,每个进程都存在于一个mount Namespace里面,mount Namespace为进程提供了一个文件层次视图。如果不设定这个flag,子进程和父进程将共享一个mount Namespace,其后子进程调用mount或umount将会影响到所有该Namespace内的进程。如果子进程在一个独立的mount Namespace里面,就可以调用mount或umount建立一份新的文件层次视图。

4、PID:从2.6.24内核开始,同一个进程,在不同的命名空间进程号不同,进程命名空间是一个父子结构,子空间对于父空间可见。

5、Use:从2.6.23开始,到3.8版本不再支持,用于隔离用户信息;

6、UTS:从2.6.19内核开始,全称是Unix Timesharing system,包含了运行内核的名称、版本、底层体系结构类型等信。

三、如何创建命名空间

创建一个新的命名空间有以下几种办法:

1、在clone新进程时指定CLONE_NEWPID/CLONE_NEWIPC/CLONE_NEWNS/CLONE_NEWUSER/CLONE_NEWUTS等就能为进程创建新的对应类型的命名空间;

2、setns可以切换进程的命名空间;

3、使用unshared命令,也可以用进程创建新的命名空间;

查看进程所属的命名空间可以使用cat /proc/pid/ns

四、Linux可以自动为系统服务创建独立的命名空间

一般大家都认为在容器环境下,比如docker内才容易出现进程切换到新的命名空间,其实正常情况虚拟机也是会出现的,当我们以系统服务启动某个程序时,需要为该程序配置service文件,其中有这样一个配置项:

#[Service]部分:指定启动行为,包括Type、EnvironmentFile、ExecStart、ExecReload、ExecStop、PrivateTmp。
[Service]

PrivateTmp=true

当PrivateTmp设置为true时,会为该进程创建新的Mount NameSpace,然后在新的命名空间中挂载私有的 /tmp 与 /var/tmp 目录,达到不与其他进程共享的目的。

这样做虽然增加了临时文件的安全性,但是进程就无法通过/tmp或/var/tmp目录下的文件通信了。文章来源地址https://www.toymoban.com/news/detail-464775.html

到了这里,关于Linux命名空间简述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux移动或重命名文件和目录(mv命令)

    mv 命令(move 的缩写),既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名。该命令的基本格式如下: 选项: -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖; -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项

    2024年02月17日
    浏览(30)
  • Linux :: 【基础指令篇 :: 文件及目录操作:(7)】:: cp:指定文件或目录的拷贝及指定拷贝到指定路径(与重命名)

    前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C++ 入门到入土!!!学习合集 Linux 从命令到网络再到内核!学习合集 目录索引: 1. 基本语法及功能 2. 常用可选项说明 3. 文件基本拷贝操作 - - 3.1 指定文件拷贝到当前

    2024年02月03日
    浏览(52)
  • 【Unity3D】Unity 脚本 ③ ( C# 脚本的执行入口函数 | 获取当前游戏物体及物体名称 | 获取游戏物体的 Transform 组件数据 | UnityEngine 命名空间简介 )

    在 C# 脚本中控制 游戏物体 GameObject 运动 , 要先获取该物体 , 然后 修改其 Transform 组件的属性 ; 在 游戏开始运行后 , 会自动执行 游戏物体 GameObject 上的 C# 组件代码 , 程序入口是 MonoBehaviour#Start() 函数 ; 在 C# 脚本中 , 主要的内容都在 Start() 函数 中实现 ; 在 C# 脚本中 , 游戏物体

    2023年04月12日
    浏览(59)
  • Linux将磁盘空闲空间转移到其他目录下(home目录转移到root目录下)

    目录 1、查看分区 2、备份home分区文件 (重要) 3、卸载/home 4、删除/home所在的lv 5、扩展/root所在的lv(我这里还扩展了、dev/sr0) 6、扩展/root文件系统。 7、重新创建home lv 创建时计算好剩余的磁盘容量,建议比剩余小1G左右) 8、创建文件系统 9、挂载home 10、home文件恢复 ​

    2024年02月02日
    浏览(42)
  • 虹科教程 | Linux网络命名空间与虹科PROFINET协议栈的GOAL中间件结合使用

    PROFINET是由PI推出的开放式工业以太网标准,它使用TCP/IP等IT标准,并由IEC 61158和IEC 61784 标准化,具有实时功能,并能够无缝集成到现场总线系统中。凭借其技术的开放性、灵活性和性能优势,PROFINET可应用于过程/工厂自动化、运动控制等领域。通过PROFINET,可实现确定性响应

    2024年02月13日
    浏览(41)
  • Linux查看当前目录下各文件所占空间

    要查看当前目录下各文件所占空间,可以使用du命令(磁盘使用情况)配合sort命令来实现。以下是在Linux系统中执行的命令: 解释一下这个命令: du -sh * :计算当前目录下每个文件和目录的总大小,并以易读的方式显示(例如以KB、MB、GB为单位)。 sort -hr :将du命令的输出进

    2024年02月13日
    浏览(33)
  • linux 查看磁盘空间 目录 文件 占用 大小 df du

    df 命令的全称是 Disk Free ,显而易见它是统计磁盘中空闲的空间,也即空闲的磁盘块数。它是通过文件系统磁盘块分配图进行计算出的。 du 命令的全称是 Disk Used ,统计磁盘有已经使用的空间。它是直接统计各文件各目录的大小,而不是从硬盘获得信息的。 常用 df -h 常用du

    2024年02月12日
    浏览(42)
  • 82、简述Zookeeper的命名服务、配置管理、集群管理

    通过指定的名字来获取资源或者服务地址。Zookeeper可以创建一个全局唯一的路径,这个路径就可以作为一个名字。被命名的实体可以是集群中的机器,服务的地址,或者是远程的对象等。 一些分布式服务框架(RPC、RMI)中的服务地址列表,通过使用命名服务,客户端应用能够根

    2024年02月16日
    浏览(28)
  • vs2022 命名空间“System”中不存在类型或命名空间名“Printing”

    在监控打印机状态的时候,需要用到System.Printing。 System.Printing 命名空间 | Microsoft Learn 在微软官网有这个命名空间,其中提到 不支持命名空间中的System.Printing类在Windows服务或 ASP.NET 应用程序或服务中使用。 尝试从其中一种应用程序类型内使用这些类可能会导致意外问题,例

    2024年02月05日
    浏览(26)
  • [Unity命名空间教程]介绍Unity新自带的命名空间UnityEngine.Pool

      大家都知道在一些游戏中常常要创建大量的游戏对象,如果这些对象长期占用一些内存而没有触发垃圾回收机制(以下简称GC)或者过于频繁的触发GC就会导致游戏的帧数暴跌,在移动设备直接造成卡死的现象,那引用对象池的概念,能让这些游戏对象在刚开始的时候就被初

    2023年04月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包