在 RAM 使用量达到一定程度后停止程序的命令

在 RAM 使用量达到一定程度后停止程序的命令

我有时会使用一些占用过多 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'文件中获取可用内存并格式化以供使用。

相关内容