在运行导致我的网络服务器瘫痪的 bash fork 炸弹之后,我想我应该更加小心,即使不是在 root 下。我认为在不在 root 下时一切都会好起来。所以我忽略了警告并运行了 bash fork 炸弹:() { :|:& }; :
。(如果你不理解此代码,请不要运行它,因为它会导致你的系统崩溃)并且我认为我需要一份导致服务器意外关闭的常见方式的列表,即使不是在 root 权限下。
任何建议都将受到赞赏。
问候`
答案1
如果 Linux 耗尽内存资源,那么它将调用“内存不足”杀手。
这将(随机)选择一个进程终止以释放资源。如果您的系统正在调用 oom killer,则表示它确实资源不足,它通常会将进程终止作为最后的手段。
这篇博客文章对此进行了很好的解释
http://prefetch.net/blog/index.php/2009/09/30/how-the-linux-oom-killer-works/
就你的情况来说,我认为 OOM killer 杀死了你的 web 服务器进程。
您可以通过设置每个进程的限制来阻止诸如 fork 炸弹之类的事情。
但是,您可以避免在实时服务器中输入会损害系统的命令。
这就是虚拟机的用途!;-)
答案2
运行 fork bomb 时,您可能用完了 RAM,然后 Web 服务器尝试分配一些内存。由于没有可用内存,malloc() 或类似函数返回一个 NULL 指针,该指针在代码中未正确检查,导致尝试读取/写入程序无法访问的内存块。因此,操作系统内核终止了该程序。
当网络服务器或其他服务意外关闭时,最常见的原因是软件中的错误。要么通过远程使用来利用安全漏洞,要么像您的情况一样在本地使用。
答案3
足够大的焦油炸弹或许能起到作用。不过这通常比用户错误更恶意。