我正在使用 Ubuntu 20.04,现在如果我没记错的话,Ubuntu 有一个内置功能,如果它突然使用所有 RAM 来阻止系统崩溃,它会杀死一个进程,我已经看到它发生了(例如,它会杀死任何突然的 python 脚本使用所有系统内存或其他东西,并在终端中说被杀死)
问题是很多时候这种机制不起作用,它会导致我的系统崩溃(它是一个使用所有内存的 python 脚本),我正在做机器学习的东西,我无法预测我的一些脚本可能会使用多少,我期待Ubuntu在突然使用所有系统内存时基本上杀死一个应用程序,但它不起作用,我的系统崩溃(一切都挂起,没有鼠标移动或任何东西,但使用REISUB我可以重新启动系统)
有时它甚至不会突然增加 RAM 使用量,脚本只是不断分配更多的 RAM 和 RAM,当它达到限制时,我的系统基本上会冻结并且 Ubuntu 不会停止它!我认为这种情况有一种防御机制吗?
所以我的问题是:
我如何告诉 Ubuntu 杀死任何突然使用所有可用 RAM 的应用程序?基本上,除了更改脚本之外,什么是阻止崩溃的最佳解决方案?
编辑:不管进程ID如何,有没有办法告诉操作系统在内存不足的情况下杀死python进程?意思是在内存不足时杀死任何名为 python 的进程。
编辑2:
free -h 的输出:
total used free shared buff/cache available
Mem: 15Gi 4.1Gi 218Mi 469Mi 11Gi 10Gi
Swap: 2.0Gi 946Mi 1.1Gi
编辑3:
sysctl vm.swappiness 的输出
vm.swappiness = 60
让我们将您的 /swapfile 从 2G 增加到 4G(如果您的 python 脚本需要,可能会更多)...
注意:命令使用不当
dd
会导致数据丢失。建议复制/粘贴。在
terminal
...确认 /etc/fstab 末尾的 /swapfile 行...并确认没有其他“交换”行...
编辑、使用
sudo -H gedit /etc/fstab
或sudo pico /etc/fstab
禁用交换文件并将其删除
创建所需大小的新交换文件。
在此命令中,将 4G 调整为您想要的大小。