Linux fork炸弹以及预防办法

article/2025/6/29 19:15:14

fork炸弹是什么?
fork炸弹以极快的速度创建大量进程(进程数呈以2为底数的指数增长趋势),并以此消耗系统分配予进程的可用空间使进程表饱和,而系统在进程表饱和后就无法运行新程序,除非进程表中的某一进程终止;但由于fork炸弹程序所创建的所有实例都会不断探测空缺的进程槽并尝试取用以创建新进程,因而即使在某进程终止后也基本不可能运行新进程。fork炸弹生成的子程序在消耗进程表空间的同时也会占用CPU和内存,从而导致系统与现有进程运行速度放缓,响应时间也会随之大幅增加,以致于无法正常完成任务,从而使系统的正常运作受到严重影响。
fork炸弹本体就是下面一串简单的shell脚本代码

function bomb()
{
bomb|bomb &
};
bomb

由于shell函数可以省略function前缀,因此也可以写成更精炼的模式

:() { :|:& };:

当linux系统运行此脚本后,立刻卡死,只有重启才能够解决,而且这种脚本的运行不需要任何特殊权限,以普通用户的身份就可以运行,因此非常危险


如何预防fork炸弹?
使用ulimt命令可以预防fork炸弹,通过ulimit限制用户最大进程数,可以避免fork炸弹无限制创建进程
设置用户最大进程数100

ulimit -u 100

查看用户资源

ulimit -a

max user process 已经变成了100,此时运行fork炸弹脚本已经
在这里插入图片描述
此时再去运行fork脚本,会出现没有子进程的提示。明显创建的进程已经达到了上限。就无法执行了
在这里插入图片描述
但是这种方法只针对当前终端有效,更彻底的办法,需要修改/etc/security/limits.conf这个文件

sudo vi /etc/security/limits.conf

/etc/security/limits.conf

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#        - NOTE: group and wildcard limits are not applied to root.
#          To apply a limit to the root user, <domain> must be
#          the literal username root.
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#        - chroot - change root to directory (Debian-specific)
#
#<domain>      <type>  <item>         <value>
##*               soft    core            0
#root            hard    core            100000
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4# End of file

在后面追加资源限制,格式是

<domain>        <type>  <item>  <value>

限制用户grass的最大进程数200

grass hard nproc 200

保存退出即可,用户grass运行fork炸弹就不会对系统造成影响了


http://chatgpt.dhexx.cn/article/YomSqauv.shtml

相关文章

弹窗炸弹恶搞整人

1.创建一个记事本文件 2.编辑文件内容 在文件中输入以下内容并保存 :start start cmd goto start3.实现弹窗炸弹 把文件扩展名改为.bat。 双击执行&#xff08;慎用&#xff09;&#xff0c;效果如下&#xff1a; 4.解除无线弹窗的方法 方法一&#xff1a; 新建个记事本…

python弹窗炸弹

当我们看某人不爽时&#xff0c;可以用这个&#xff1a; ​ import tkinter as tk import random import threading import timedef dow():window tk.Tk()window.title(你是SB)window.geometry("200x50" "" str(random.randrange(0, window.winfo_scre…

无限弹窗(bat代码 整人恶作剧)

炸弹弹窗&#xff0c;是使用bat制作的一个小程序&#xff0c;效果就是执行程序后会一直不停地弹出窗口&#xff0c;用来恶作剧。下面我们就来看看详细的教程。 打开文件&#xff0c;输入以下代码&#xff1a; :start start cmd goto start 点击文件&#xff0c;选择另存为 把文…

bat代码雨代码流星_怎么制作无限弹窗效果? 限弹窗代码bat文件分享

炸弹弹屏,也可以叫炸弹弹窗,是可以使用txt制作的一个小程序,效果就是执行程序后会一直不停地弹出窗口,就好像炸弹轰炸一样,如图所示,用来恶作剧很好玩。该怎么制作这个无限弹窗效果呢?下面我们就来看看详细的教程。 1、首先,如图所示,我们打开电脑,在桌面鼠标右键,新…

分享森林火灾年鉴统计平台

https://www.yearbookchina.com 可以参观一下&#xff0c;里面有一部分研究人员能用得上的数据

分享统计数据搜集方法

阿关科研统计篇 将近两个月&#xff0c;在统计年鉴中水深火热。终于&#xff0c;形成一套可供后人快速工作的流程&#xff0c;以供大家参考。点名感恩提供帮助的江红蕾博士的引领和帮助。 第一&#xff1a;明确你想获取的统计数据区域 一般而言&#xff0c;历年《中国统计年…

统计年鉴在哪里查找

一、国家统计局 国家统计局>>年度统计公报 (stats.gov.cn) 二、地方统计局 以江苏为例 江苏省人民政府 江苏统计年鉴 (jiangsu.gov.cn) 三、统计年鉴分享平台 可以直接获取国家以及地方统计年鉴&#xff0c;此网站收录的很全。 上海统计年鉴2001 - 统计年鉴分享平台…

统计年鉴分享平台 - 让科研工作者和学生查找数据更方便

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也…

统计年鉴分享平台,怎么做到免费下载

上海统计年鉴2001 - 统计年鉴分享平台 (yearbookchina.com) 在各个平台分享3次&#xff0c;可以获得110个下载币。

如何将CHM文件翻译成中文

chm文件对于我们在某种需求上而言是非常有帮助的一类文件&#xff0c;可以快速的让我们了解&#xff0c;熟悉和掌握我们所需要满足的需求&#xff0c;但是英文版的chm文件对于我们来说&#xff0c;既是又爱又恨&#xff0c;特别是对于英语不好的同学来说&#xff0c;为什么写这…

win10 打开 chm 文件显示异常的解决办法

一些电子书、软件说明书使用chm格式&#xff0c;在win10下打开chm经常会遇到显示空白&#xff0c;或提示页显无法显示错误。可能的原因与解决办法如下&#xff1a; 1. HTML Help (CHM) 组件未注册 用管理员身份打开command 窗口&#xff0c;输入 regsvr32 hhctrl.ocx &#x…

ubuntu下打开.chm文件的方法(比如交换机参考手册)

用kchmviewer软件&#xff0c;ubuntu直接安装即可&#xff1a; sudo apt install kchmviewer 转载自&#xff1a;https://blog.csdn.net/Jason_fight/article/details/53339368 感谢分享&#xff0c;仅供参考

php帮助文档无法打开,电脑不能打开文件secedit.chm怎么办

电脑不能打开文件secedit.chm怎么办&#xff1f; 不能打开secedit.chm是指Internet Explorer 不能链接到请求的网页&#xff0c;或者打开后“页面无法显示”。遇到这种情况&#xff0c;可以通过打开开始程序的按钮&#xff0c;点击运行&#xff0c;然后输入regsvr32 hhctrl.ocx…

chm文件打开中文乱码

今天在看C语言库函数速查手册.chm时&#xff0c;发现自己电脑自带的MicrosoftHTML帮助可执行文件打开会出现中文乱码&#xff01;经过查询资料&#xff0c;发现可以进入注册表添加或者修改一些特定值来恢复中文。 打开“此电脑”&#xff0c;选择C盘进入&#xff0c;在Windows…

如何打开chm文件

问题 下载了chm格式的图书&#xff0c;但是打开以后什么都没有 去网上搜了一圈&#xff0c;如何打开chm格式的文件 大部分的操作是 打开文件属性&#xff0c;修改打开方式&#xff0c;使用windows中的hh.exe打开 但是我失败了 解决 这里搬运下Quora上一个回答 不需要任何额…

打开chm文件c语言,chm格式,手把手教你chm文件怎么打开

电脑用户在首次接触chm文件的时候一定很抓狂&#xff0c;Unbelievable&#xff01;其实chm文件是系统帮助文件&#xff0c;细心会发现在许多软件中附带的说明也是chm文件格式&#xff0c;那什么软件可以打开chm呢&#xff1f;下面&#xff0c;小编跟大家带来了打开chm文件的图文…

chm格式怎么打开?

”. chm“ 该类型的文件是可以用Windows自带的hh.exe文件来进行打开。 1、右键点击需要打开的htm文件&#xff0c;弹出框如下&#xff1a; 2、点击“属性”打开属性框&#xff0c;点击【更改】按钮 3、进入下一个弹窗&#xff0c;选择“在这台电脑上查找其他应用” 4、打开对话…

hibernate中的session用法

Session的主要功能是提供对映射的实体类实例的创建&#xff0c;读取和删除操作。实例可能以下面三种状态存在&#xff1a; 临时状态&#xff08;transient&#xff09;: 不曾进行持久化&#xff0c;未与任何Session相关联 持久化状态&#xff08;persistent&#xff09;: 仅与…