fork:重试:资源暂时不可用

fork:重试:资源暂时不可用

当我连接到我的服务器时,我得到,

-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable

我也尝试执行以下命令,结果是一样的。

-bash-4.1$ df -h
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$ 
-bash-4.1$ ls -lrth
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Interrupted system call
-bash-4.1$ 
-bash-4.1$ ps -aef | grep `pwd`
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$ 

为何而来?我该如何解决它?

答案1

这可能是由于服务器本身(或特定于您的用户帐户)的某些资源限制造成的。您的 shell 中的限制可以通过检查ulimit -a。 Esp 检查ulimit -u最大用户进程数,如果已达到最大进程数,fork 无法创建任何新进程并因该错误而失败。这也可能是由于交换/内存资源问题

答案2

fork:资源暂时不可用

该错误表示当前 shell 资源受到限制(通过 检查限制ulimit -a)。因此,您可以尝试在另一个 shell 中,或者通过使用命令来增加资源ulimit,该命令控制 shell 可用的资源以及它在操作系统上创建的进程。

要增加限制,请尝试运行:

ulimit -Sn unlimited && ulimit -Sl unlimited

将软限制提升为硬限制,或者:

ulimit -l unlimited
ulimit -n 10240 

将进程的最大大小设置为无限制,将打开文件的最大数量设置为 10240。

请参阅:help ulimit了解更多信息。

要使其持久,请将上述设置添加到您的启动中RC文件(例如~/.bashrc)。


您还可以使用/etc/sysctl.conf(参见: man sysctl.conf)来增加内核限制,例如

kern.maxprocperuid=1000
kern.maxproc=2000

答案3

dmesg是你的朋友。运行此命令为什么系统可能阻止了某些内容。

对于基于 systemd 的系统,也存在用户限制。您可以使用以下命令检查限制:

systemctl status user-1000.slice
systemctl cat user-1000.slice

1000是负责用户的PID,分别是您尝试登录的用户。

有关更多信息,请查看以下页面,您可以在其中了解如何更改或改变特定或所有用户的限制:

https://www.suse.com/support/kb/doc/?id=000019044

答案4

该问题也可以使用以下命令解决:

yum install psmisc
killall -STOP -u user1
killall -KILL -u user1

这里user1是超出限制的用户组

相关内容