当我连接到我的服务器时,我得到,
-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,分别是您尝试登录的用户。
有关更多信息,请查看以下页面,您可以在其中了解如何更改或改变特定或所有用户的限制:
答案4
该问题也可以使用以下命令解决:
yum install psmisc
killall -STOP -u user1
killall -KILL -u user1
这里user1是超出限制的用户组