如何在 Linux 中更改用户 fork 进程的最大数量

如何在 Linux 中更改用户 fork 进程的最大数量

每当我登录到 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,应该会显示所有正在运行的进程,检查列表(或将其发布在此处)以查看是否发生了奇怪的事情。

相关内容