不计算 root 保留的空间(通常为 5%),如果 /tmp 确实 100% 已满,则有 0 字节空闲,为什么我们不能通过 ssh 登录机器?我们只收到错误消息“无法分叉”。
ssh 客户端是否有任何参数,以便我们在 /tmp 达到 100% 完整的情况下仍然可以登录到计算机?
更新:重新启动并不是一个真正的选择:\
答案1
我不认为完整/tmp
是问题所在。fork()
仅当运行的进程过多时,系统调用才会因该特定错误而失败。
你有 ulimit 设置吗?
如果您无法访问控制台,那么您无能为力......
答案2
我见过 /tmp 由交换空间支持的情况......因此,如果您正在交换并且有大量 /tmp 活动,则很可能会耗尽交换空间,您会看到此消息。
如果内存不足,那么除了重新启动之外,您别无选择。内存杀手可能正在工作,但是,它会不加区别地杀死其中一些可能很重要的进程。
另一件事是一个(或多个)进程已填满进程表。如果没有更多可用插槽,您也可以收到该消息。您的解决方案是对导致该情况的进程进行搜索和销毁操作......假设您可以登录。如果您无法登录,那么重新启动是您唯一的选择。
最后,当然,机器软件或硬件可能存在严重问题。从而造成你所描述的情况。
答案3
在许多系统上,/tmp
是一个驻留在 RAM 上的虚拟文件系统。根据您的配置方式,填满它可能会耗尽您所有的 RAM,并使您没有足够的内存来初始化新进程。
正如您可以想象的那样,这不是ssh
事后可以解决的问题。但是您可以通过调整来防止它在将来发生,/tmp
使其不会增长得这么大。
答案4
作为解决方法,请在重新启动后尝试 ssh。我曾经遇到过类似的问题,系统重启后就自动解决了!