14

我错误地将受限服务器用作 5000 个并行连接的 iperf 服务器。(限制为 1024 个进程)现在每次登录时,我都会看到:

-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

然后,我试图杀死他们,但是当我执行 ps 时,我得到了这个:

-bash-4.1$ ps
-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

当我做 killall 或类似的事情时也会发生同样的情况。我什至尝试重新启动系统,但这又是我在重新启动后得到的:

-bash-4.1$ sudo reboot
-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$ 

所以基本上我什么都做不了。所有命令都会出现此错误:/ 但是,我可以“退出”。

这是一个我没有物理访问权限的场外服务器,因此我无法在物理上关闭/打开它。

有什么想法可以解决这个问题吗?我非常感谢任何帮助。

4

2 回答 2

22

鉴于您可以登录,您可能想尝试使用exec来执行所有命令。执行后exec你将不得不再次登录,因为exec会杀死你的shell(通过用你运行的命令替换它)。

exec不会占用额外的进程槽,因为它将用要运行的程序替换正在运行的 shell。因此,它应该能够绕过ulimit限制。

于 2014-02-28T20:21:54.560 回答
5

我最近有同样的问题。在我的情况下,原因是有代码在我的所有权下执行并且消耗了几乎所有的资源,没有给我的命令留下任何东西。这就是我所做的,“exec top”来识别消耗最大资源的 PID “exec kill -9”杀死上面命令识别的 PID。

杀死PID后,一切恢复正常,我能够重新登录。

于 2014-09-25T16:44:06.503 回答