系统内存不足时需要应用程序/脚本警报

我不会使用交换文件(由于内核或AMD驱动程序中的一些错误)。

我不想让一些工具运行并监视自由系统内存,并在它低于某个指定限制时提醒我。

这将通知我,我需要关闭一些应用程序(或浏览器选项卡),以避免系统冻结由于一些奇怪的kswapd0 I / O活动(可能是另一个错误)。

有没有合适的软件?

更新:

我重新设计了由Gary提供的脚本以满足我的需求,并希望分享它

#!/bin/bash #Minimum available memory limit, MB THRESHOLD=400 #Check time interval, sec INTERVAL=30 while : do free=$(free -m|awk '/^Mem:/{print $4}') buffers=$(free -m|awk '/^Mem:/{print $6}') cached=$(free -m|awk '/^Mem:/{print $7}') available=$(free -m | awk '/^-\/+/{print $4}') message="Free $free""MB"", buffers $buffers""MB"", cached $cached""MB"", available $available""MB""" if [ $available -lt $THRESHOLD ] then notify-send "Memory is running out!" "$message" fi echo $message sleep $INTERVAL done 

你可以尝试free使用。

free -sn将每n秒更新一次输出。 将if包含在if ,无论你觉得使用的是“内存太多”,并在到达该点时显示消息。

编辑:这是我提出的脚本。 粗糙,但它的工作原理。

 #Checks for low memory. #!/bin/bash #cutoff_frac is basically how much used memory can be at in terms of how much #total memory you have...2 is 1/2 of 100% or an alert when you're using 50% mem, etc. cutoff_frac=2 total_mem=$(free|awk '/^Mem:/{print $2}') let "threshold = $total_mem / $cutoff_frac" while : do free_mem=$(free|awk '/^Mem:/{print $4}') if [ $free_mem -lt $threshold ] then notify-send "Low memory!!" fi sleep 5 done exit 

PHP版本的脚本:

系统监视器中显示的可用内存为:Free = Total-(Used-buffered-cached)

系统监视器中的内存使用情况报告与免费的内存使用情况报告有什么区别?

注意:要将此脚本作为cron作业运行,请使用:

 * * * * * env DISPLAY=:0.0 path/to/file 90 

要么

 @restart env DISPLAY=:0.0 path/to/file 

取消注释while循环以手动运行它:

码:

 #!/usr/bin/php 1)?(int)$argv[1]:90; //$interval=($argc>2):(int)$argv[2]:25; //while(true) //{ exec("free",$free); $free=implode(' ',$free); preg_match_all("/(?<=\s)\d+/",$free,$match); list($total_mem,$used_mem,$free_mem,$shared_mem,$buffered_mem,$cached_mem)=$match[0]; $used_mem-=($buffered_mem+$cached_mem); $percent_used=(int)(($used_mem*100)/$total_mem); if($percent_used>$alert_percent) exec("notify-send 'Low Memory: $percent_used% used'"); //sleep($interval); //} exit(); ?>