use*_*165 11 linux bash fork process ulimit
我错误地使用有限的服务器作为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
Run Code Online (Sandbox Code Playgroud)
然后,我试图杀死他们,但是当我做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
Run Code Online (Sandbox Code Playgroud)
当我做一个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$
Run Code Online (Sandbox Code Playgroud)
所以基本上我什么都做不了.所有命令都会收到此错误:/我可以"退出".
这是一个我没有物理访问权限的异地服务器,因此我无法在物理上关闭/打开它.
我有什么想法可以解决这个问题吗?我非常感谢任何帮助.
nne*_*neo 20
鉴于您可以登录,您可能想尝试使用exec
执行所有命令.执行后,exec
您将不得不再次登录,因为exec
将杀死您的shell(通过用您运行的命令替换它).
exec
不会占用额外的进程槽,因为它将用运行的程序替换正在运行的shell.因此,它应该能够绕过ulimit
限制.
我最近遇到了同样的问题.在我的情况下,原因是有些代码在我的所有权下执行,几乎消耗了所有资源而没有为我的命令留下任何东西.这就是我所做的,"exec top"来识别消耗最大资源"exec kill -9"的PID,从而消除上述命令识别的PID.
在杀死PID后,一切恢复正常,我能够重新登录.