运行任何命令都会在Ubuntu Server上返回“无法分配内存”

我正在使用Ubuntu 14.04。 最近,当我使用具有sudo权限的用户通过SSH登录时,我运行的每个命令都会导致“无法分配内存”错误。 这是我在我的控制台尝试的一些

myuser@mymachine:~$ whoami -bash: fork: Cannot allocate memory myuser@mymachine:~$ uname -a -bash: fork: Cannot allocate memory 

即使我sudo reboot now尝试sudo reboot now ,我也会收到上述错误,所以我不知道还能尝试解锁我的实例。 如果重要的话,主持人是DigitalOcean。

编辑:根据这里给出的答案/建议是“免费”的输出

 myuser@mymachine:~$ free -bash: fork: Cannot allocate memory 

正如它在错误消息中所说,您的计算机内存已用完。 这可能有很多原因,但基本上,有些事情正在耗尽你的所有记忆,甚至没有留下任何剩余的基本命令用法。

我建议您重新启动Droplet(只需转到客户端控制面板并选择“Reboot”), ssh in然后运行tophtop 。 密切关注内存使用情况,看看哪些进程占用了所有内存。 从那里,尝试

  1. 杀死/删除有缺陷的程序/过程

    警告 :请先研究过程是否是一个必不可少的系统过程! 如果系统进程导致内存问题,不要只是杀死它,对它进行研究以及处理它的具体方法。

  2. 更改该程序/进程的配置,以便它不会占用您的所有内存。

防止问题再次发生的建议

  • 好的事情是添加交换内存 ,因为如果你用完了它会分配更多的内存。
  • 无论何时安装程序,请确保正确配置它们,以免它们以非预期的方式执行(如吃掉内存)
  • 每次添加一个软件包或基本上配置了任何新软件后,请检查htoptop以查看您正在使用当前程序的内存量。 如果您注意到您几乎使用了所有这些内容,请尝试通过浏览并删除不必要的程序/进程来清除一些内容。
  • 如果有什么东西是自动启动的(当然除了系统进程!),你无法识别或想要自动启动,请将其删除! 但是在杀死/删除它之前总是要研究一个进程是什么,因为它对于启动过程或系统function等是必不可少的。