![“无法分叉”错误消息](https://linux22.com/image/812190/%E2%80%9C%E6%97%A0%E6%B3%95%E5%88%86%E5%8F%89%E2%80%9D%E9%94%99%E8%AF%AF%E6%B6%88%E6%81%AF.png)
终端上的许多不同程序都会发生这种情况。通常伴随着一些关于无法分配内存的错误消息。
当我尝试“free -m”时,输出如下:
martin@martin-ThinkPad-T410:~$ free -m
total used free shared buffers cached
Mem: 3823 3079 744 0 99 1159
-/+ buffers/cache: 1820 2003
Swap: 3953 60 3893
为什么我的交换使用率这么低?这有关系吗?
答案1
您必须设置最大进程数的限制/etc/security/limits.conf
或者 Ubuntu 中可能设置了一些默认设置。
我将其设置为 350 个进程,以防止意外出现 fork 炸弹。让我抓狂的是 - 当我的进程无法再 fork 时,我当时运行的进程数远远超出了限制。
事实证明,原因在于,没有计算进程,而是计算内核级线程。
ps -efL | grep ^$USER | wc -l
确实显示我已经接近极限。仅我在 Chromium 中打开的选项卡/窗口数量就可能超过 100 个这样的线程 - 难怪我很容易就达到了这个极限。