每当我登录到 shell 时,我都会收到此错误
-bash: fork: Resource temporarily unavailable
-bash-3.2$
我似乎无法执行任何使用 的命令fork()
。
我试过,ulimit -u
因为它不使用 fork,它返回了35
。不知何故,我的最大进程设置为35
。
我想增加这个数字,但我不知道在哪里进行更改。
答案1
如果你只想更改该 shell 的限制,你可以运行:
sudo ulimit -u 1000
如果您想要进行更永久的更改,您需要编辑或/etc/limits.conf
(/etc/security/limits.conf
取决于您的 Linux 发行版)并添加以下行:
username hard nproc 1000
username
用实际用户名替换
除了用户名,还可以使用组名,只要在组名前加上前缀即可@
。如果使用,*
则组名将成为所有用户的默认设置
例子:
myuser hard nproc 1000
@mygroup hard nproc 3000
* hard nproc 500
答案2
这可以在 中进行更改/etc/security/limits.conf
。查找以下形式的行:
username hard nproc 25
@groupname hard nproc 100
这些行将username
用户限制为 25 个进程,将组中的用户限制groupname
为 100 个进程。您需要 root 权限在机器上。
答案3
正如其他人已经提到的那样,看看limits.conf
。当您登录 Gnome、KDE 或任何其他 GUI 时,您可能已经运行了超过 35 个进程。
例如,从 GUI 注销并切换到 VT Ctl Alt F1,然后无需 GUI 即可登录。
现在您应该可以查看了/etc/security/limits.conf
。如果它是空的或全部被注释掉,您可以查看目录中是否有/etc/security/limits.d
可以减少的内容ulimit
。
在控制台上,您还应该能够启动其他进程来编辑或调整limits.conf
或文件limits.d
。
答案4
重新设置 ulimit 应该就足够了,无需更改配置(更不用说 下的系统范围配置/etc
)。35 个进程应该足够了,OP 的登录过程出了问题。
在终端运行中ps -au
,应该会显示所有正在运行的进程,检查列表(或将其发布在此处)以查看是否发生了奇怪的事情。