我有时会使用一些占用过多 RAM 的程序,并且由于 RAM 完全填满,导致我的系统崩溃。
是否有任何命令可以让 ubuntu 在使用一定量的 RAM 后自动停止某些特定进程的执行?
答案1
您可以使用 bash 的“while 循环”来实现这一点。下面是我编写的一个简单的脚本,如果内存不足,它将退出:
#!/usr/bin/env bash
set -x
set -e
state=$(sed -E 's/^[[:space:]]*([[:digit:]]*).*/\1/' <<< $(egrep --color 'MemFree' /proc/meminfo | cut -d" " -f2-))
check="2000000"
while [ "$state" -gt "$check" ]
do
echo "Lots of memory"
done
echo "Out of memory"
exit 1
该脚本从“/proc/meminfo”文件获取信息并检查剩余的可用内存。但当然可以根据您的需要进行修改。
信息:
set -x
:用于调试脚本。set -e
:第一次出现错误时停止脚本。state=$(sed -E 's/^[[:space:]]*([[:digit:]]*).*/\1/' <<< $(egrep --color 'MemFree' /proc/meminfo | cut -d" " -f2-))
:从'/proc/meminfo'文件中获取可用内存并格式化以供使用。