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


31

当我连接到服务器时,

-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$ 

为什么会这样?我该如何解决呢?


2
看起来交换已过载(/ tmp文件系统可能已满)
Lambert

2
ulimit -a,也许您遇到了一些过程限制
c4f4t0r 2015年

Answers:


20

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


9

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

1
发生此错误时,“重试”是否暗示它将重复尝试直到资源可用?
DaveTheMinion

@DavidB或者它确实重试,但是失败了。
库萨兰达

@Kusalananda好的,谢谢。
DaveTheMinion

0

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

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

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


杀死用户的每个进程似乎有点费力。同样,该yum命令也可能无法派生。
库萨兰达

yum命令将通过root用户运行,假设问题发生在与root用户不同的用户上
Arun

如果外壳无法分叉,df它也会有运行问题sudo
库萨兰达
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.