unshare -p时提示Cannot allocate memory如何解决

news2024/11/19 1:22:50

当使用unshare -p命令时,出现如下报错:

unshare -p /bin/bash
bash: fork: Cannot allocate memory

如果想要正常使用,只需要添加–fork选项就行

unshare -p --fork /bin/bash


在使用 unshare -p 创建新的 PID 命名空间时,存在一些关键的特性和限制。

PID 命名空间的工作原理

  1. PID 1 的特殊性:
    • 在每个 PID 命名空间中,第一个启动的进程总是 PID 1。这个进程具有特殊的管理职责,比如处理僵尸进程和信号。
    • PID 1 需要能够创建新的进程和管理系统资源。如果没有正确的上下文,其他进程(如 Bash)将无法正常运行。
  2. 使用 --fork 的必要性:
    • 当你使用 unshare -p 而不加 --fork 时,新的命名空间中的进程实际上是在当前进程中启动的,而这个进程仍然保持其原有的 PID,这意味着它不是真正的 PID 1。
    • 这会导致 Bash 或其他进程无法获得 PID 1 所需的特权,从而导致无法管理进程,可能出现问题。
  3. 解决方案:
    • 加上 --fork 选项可以确保新创建的进程在新的 PID 命名空间中运行,成为真正的 PID 1,从而能够正确处理进程管理和资源分配。
    • 这样可以确保 Bash 及其他进程能够正常运行并处理其职责。

形象理解

  1. 不采用–fork直接隔离pid

    在这里插入图片描述

    /bin/bash

    直接隔离pid,在新的命名空间中运行的bash程序

  2. 采用–fork,由子进程使用unshare来隔离pid

    在这里插入图片描述

    unshare -p --fork --mount-proc /bin/bash

    unshare先创建子进程,然后将传入的参数输入,创建bash程序

  • 两者的区别在于新的命名空间一个是由原始的bash创建的,一个是由unshare进程创建的

  • 由于/bin/bash中第一个传入的进程(PID=1)是调用他们的进程(即管理进程),所以1bash成为了管理进程2unshare成为了管理进程。而原始的bash进程管理不了这个新的命名空间,所以就会报错。

  • 注意!!如果认为fork没有用的话,那么290705这个进程在fork后就要被kill掉了,所以这个进程的存在就是为了管理子进程

  • 为什么别的选项不需要fork(如-i)?这是因为他们并没有隔离自己的PID,所以他们都被管理原始bash的进程管理着,不需要新的管理者

父进程(父bash)、子进程(unshare创建的bash)之间的关系

(这里统一称为父进程和子进程)如果进一步实验就会发现:

  1. 父进程和子进程都可以看到对方运行的进程

    • 因为父进程和子进程并没有使用--mount-proc选项(没有隔离进程信息),由于linux运行任何一个进程都会创建一个对应的文件,所以他们查看进程的状况时看到的都是同一堆进程文件,自然就能看到对方运行的进程
  2. 父进程可以杀掉子进程中运行的进程,而子进程却杀不掉父进程中运行的进程

    • 子进程是父进程创建的,在设计中父进程的权限要大于子进程,所以父进程可以kill掉子进程中的进程,相反子进程权限不足

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2162098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

aws s3 存储桶 前端组件上传简单案例

写一个vue3 上传aws oss存储的案例 使用到的插件 npm install aws-sdk/client-s3 注意事项 : 1. 本地调试 , 需要设置在官网设置跨域 必须!!! 否则调试不了 ,前端代理是不起作用的 ,因为是插…

如何通过蜂巢(容器安全)管理内部部署数据安全产品与云数据安全产品?

本文将探讨内部部署和云数据安全产品之间的主要区别。在思考这个问题之前,首先了解内部部署和云数据安全产品之间的主要区别。 内部部署数据安全产品意味着管理控制台位于企业客户的内部部署,而德迅云安全则在云中托管云数据安全产品。德迅云安全供应商通…

TAPD_保密需求介绍

功能指引 本文档将介绍:保密需求的基本介绍、如何配置保密需求和保密需求相关的常见问题。 一、基本介绍 伴随业务的拓展,团队成员们在工作中不免要遇到跨团队协作和外包人员管理等需要 权限控制和信息保密 的场景。 此情况下,项目数据的权…

Python接口自动化测试输出日志到控制台和文件

一、日志的作用 一般程序日志出自下面几个方面的需求: 1. 记录用户操作的审计日志,甚至有的时候就是监管部门的要求。 2. 快速定位问题的根源 3. 追踪程序执行的过程。 4. 追踪数据的变化 5. 数据统计和性能分析 6. 采集运行环境数据 一般在程序上线之后…

图文组合商标部分驳回后优化后初审通过!

这几天以前有个企业的商标初审下来了,以前是加了图形个别部分没有通过初审,后面是把图形去掉重新用文字申请下来初审。 图形与文字同时申请,会分别审查有一个元素过不了,整体就会过不了,所以平常就会建议分开申请注册商…

Transformers | 在自己的电脑上开启预训练大模型使用之旅!

本文内容主要包括两部分: Hugging Face 社区介绍 如何使用 Transformers 库的模型 1. Hugging Face 社区介绍 Hugging Face (https://huggingface.co/) 是一个 Hub 社区,它和 GitHub 相同的是,他们都是基于 Git 进行版本控制的存储库社区&…

探寻大模型时代智慧农业新未来,商汤与上海市农委达成战略合作

近日,在中国农民丰收节上海会场丰收庆典活动上,商汤科技与上海市农业农村委员会(下称:上海市农委)签署战略合作协议,双方将依托先进的AI大模型技术,共同推进上海智慧农业发展,打造国…

ESXI主机加入VCENTER现有集群提示出现常规性错误

背景:由于忘记了这台主机的root密码,所以在迁移完虚拟机后给这台主机重新安装了操作系统,装完操作系统加集群提示如下报错: 查阅了一些资料后发现主机的CPU是一样的,不需要开EVC; 也有一些说需要改这个配置…

《关键跃升读书笔记》11

协作: 怎么解决“容忍⿊”这类问题?我们要重新理解“⽂化”。⼈类⽂化、企 业⽂化,都是为了让⼈们更好地协作。 再⼩的公司,再⼩的团队,都是⼀个共同协作体,就像整个⼈类社会 是共同协作体。理解了⼈类社会…

“被卷”还是“破卷”,咱有得选

职场内卷是一个当下社会备受热议的话题。身处内卷中的人,所感受到的是价值感不足、低效、无奈等消极内容,但哪怕知道处于那样的工作环境是不健康的,因为环境所迫,似乎也只能被裹挟。 就如当下热播的都市剧《凡人歌》中的那隽&…

Kubernetes 深入浅出系列 | 容器剖析之容器基本实现原理

一、容器基本实现原理 Docker 主要通过如下三个方面来实现容器化: ① 使用操作系统的 namespace 隔离系统资源技术,通过隔离 网络、PID 进程、系统信号量、文件系统挂载、主机名和域名,来实现在同一宿主机系统中,运行不同的容器&…

6种常见位运算符+异或运算符的使用(加密、解密)

一、位运算符 位运算符进行的是整数与整数之间的运算 1、右移运算符&#xff1a;>> &#xff08;1&#xff09;相当于对整数除以2 &#xff08;2&#xff09;举例&#xff1a; int num 2; System.out.println(num >> 1); 2、左移运算符&#xff1a;<< …

数据结构---顺序表之单链表

1.链表的概念 链表是一种逻辑上是线性的&#xff0c;但物理结构不一定是线性的数据结构&#xff0c;它通过链表中的指针链接次序实现的 链表的存储空间是我们通过动态内存开辟的内存空间&#xff0c;所以他们的地址可能是连续的也可能不是连续的 2.链表的分类 1.单向或者双向…

PostgreSQL JAVA与SQL集成之PL/Java

PostgreSQL pljava PL/Java 作为 PostgreSQL 的编程语言扩展之一&#xff0c;与 PL/pgSQL&#xff08;PostgreSQL 原生的存储过程语言&#xff09;相比&#xff0c;提供了 Java 语言特有的面向对象功能&#xff0c;并支持 Java 的标准库和第三方库。由于 Java 是一种跨平台的语…

Python 聊聊有内置函数,又该怎么学习内置函数

前言 python有内置函数的概念&#xff0c;从Python3.x开始&#xff0c;内置函数位于builtins模块&#xff0c;比如我们常用的内置函数len()&#xff0c;其实它是builtins模块下的属性&#xff0c;我们也可以builtins.len&#xff08;&#xff09;去访问&#xff0c;当然因为每个…

海豚调度运行成功但无法生成实例解决

海豚调度运行成功但无法生成实例解决 问题描述 点击运行&#xff0c;提示运行成功但无法在工作实例中看到 问题定位 查看资源监控&#xff0c;内存占用80% 查看master日志 tail -f /home/dolphinscheduler/tmp/dolphinscheduler/master-server/logs/dolphinscheduler-m…

无刷直流电机内阻小和大有什么区别

‌直流电机的内阻小和大各有其特点和应用场景。 ‌ 内阻小的直流电机通常具有较小的线圈匝数&#xff0c;这意味着在工作时消耗的电流较大&#xff0c;从而在同一转速下能够提供较大的扭矩。这种电机适用于需要较大扭矩的应用场景&#xff0c;例如重载启动或需要较高机械效率的…

模型django封装uvicorn服务器部署实战

Uvicorn 是一个轻量级的 ASGI 服务器&#xff0c;它基于 uvloop 和 httptools 这两个高性能的异步库。Uvicorn 提供了快速的启动时间和低延迟的响应&#xff0c;非常适合用于生产环境。 Django&#xff1a; 是一个开源且强大的Web框架&#xff0c;适用于快速开发和部署Python …

Spring中存储Bean的常见注解

目录 IoC & DI IOC&#xff08;控制反转&#xff09;详解 依赖注入的三种方式 IoC & DI IoC: Inversion of Control (控制反转), 也就是说 Spring 是⼀个"控制反转"的容器. 控制反转&#xff1a;也就是控制权反转. 什么的控制权发⽣了反转? 获得依赖对…

成为谷歌开发者专家(GDE)的经历

大家好&#xff0c;我是张海龙(Jason)。经过一年多的准备&#xff0c;GDE申请 终于正式成功通过面试&#xff0c;成为了国内第一位Firebase GDE。下面对整个过程做个总结&#xff0c;希望对大家有所帮助。 1.什么是 GDE&#xff1f; Google Developers上面有详细的说明&#x…