#include <stdlib.h>
#include <unistd.h>
int main()
{
while(1)
fork();
}
这是叉炸弹的代码。
在我们学院,我们通过telnet进行连接,即客户端服务协议。大约有100个系统连接到服务器。突然,我们看到服务器变慢,一段时间后崩溃了。我知道某人实施了一个叉子炸弹。
我们如何检测到在哪个系统上实施了分叉炸弹?我们如何阻止它?
一种方法是限制单个用户可能拥有的最大进程数。是否有任何方法可以停止它并知道它是从哪个系统实现的?
19
Telnet?认真吗 您应该真正使用SSH ...
—
ThiefMaster 2013年
另请参阅叉式炸弹清理后的最佳方法是什么?。
—
PetrPudlák'13
很好,它是从SO迁移的,但是一个答案可能是在内核级别。一些补丁已经初步完成,但似乎没有一个被接受。我的观点是:如何检测它:任何用户都会知道它不再可以使用系统,因此检测点可能不是重点。如何恢复?我会说,当前的答案是重新启动,这是一种告诉内核仅运行一个进程(您要清理混乱的进程)并停止所有其他进程的方法。这可能是仅在系统控制台中可访问的功能。
—
philippe lhardy