Answers:
您可以通过修改来轻松限制可在Ubuntu和大多数其他Linux发行版中产生的进程数量 /etc/security/limits.conf
sudoedit /etc/security/limits.conf
然后将此行添加到该文件的底部:
* hard nproc nnn
哪里:
hard
在内核级别设置限制,以便在不重新启动的情况下无法更改它。nproc
是每个用户的最大进程数。nnn
是您应该通过以下方式为系统计算的数字:
ps aux -L | cut --delimiter=" " --fields=1 | sort | uniq --count | sort --numeric-sort | tail --lines=1
上面的命令将列出所有用户(包括线程)的所有进程,对它们进行汇总并列出进程数量最大的用户名。为了安全起见,在运行上述命令之前,请打开通常需要数量的应用程序,然后再将该数字加倍以确保安全。
设置此限制后,您需要重新启动,但这会影响系统上的每个非root用户。因此,如果任何非root用户执行fork炸弹,则将具有该硬限制。
默认情况下,组和通配符限制不适用于root用户。root
如果要将规则应用于超级用户,请在规则中使用文字用户名。
另外,如果您不希望很快重新启动,可以使用sudo ulimit -u 800
它将限制仅对正在运行的会话进行限制,但是很容易被具有sudo
特权的叉炸弹绕开!
重新启动后,/etc/security/limits.conf
将使用其中的任何内容。
有关叉子炸弹的其他一些信息:它们不是恶意软件或任何可怕的东西。它们通常包含一些基本内容,例如脚本,该脚本会自我调用两次,从而使它在计算机上的存在呈指数增长。即使它们以快速的速度占用了很小的内存,它们的倍数也会迅速填满所有可用的RAM,并且机器会冻结或重新启动。唯一的危险是丢失未保存的信息。我将恶作剧分类为恶作剧,而不是恶意软件。
当您不确定98%的动作时,应该很少在命令行中执行任何操作。如果您无法阅读正在执行的命令,请不要执行。这对无法读取的十六进制/ base64字符块应用了double,可用于掩盖各种麻烦。如果不确定命令,可以随时在Ubuntu手册页中搜索该命令的操作,并在使用时格外小心,sudo
因为该命令将作为root用户执行。
alias ":(){ :|: & };:"="echo 'No.'"
,.bashrc
它将在每次登录时执行吗?