我想设计一个脚本来发送交换使用率超过 85% 的警报

我想设计一个脚本来发送交换使用率超过 85% 的警报
cat /proc/meminfo | grep Swap

SwapCached:            460248 kB
SwapTotal:             8388600 kB
SwapFree:              1031900 kB

我想使用此信息将其与阈值进行比较。当达到限制时,将发出警告。我可以得到任何帮助吗?

答案1

一行:

if [[ $(swapon -s | grep -v Size | awk '{print $4/$3*100}'| awk -F "." '{print $1}') -ge 85 ]]; then echo 'Swap alert'|wall -n;fi

您可以测试它更改85为其他值以确保它有效。

答案2

严格来说,为了“获取数字”,我会使用:

$ grep Swap /proc/meminfo | tr -d "[a-zA-Z :]"
7228
3141628
3091688

或者,如果您需要一行中的值:

$ echo `grep Swap /proc/meminfo | tr -d "[a-zA-Z :]"`
7228 3141628 3091688

答案3

你可以从下面这样开始:

#!/bin/bash

totalSwap=$(cat /proc/meminfo | sed -n 's/^SwapTotal: \+\([0-9]\+\) \+[a-zA-Z]\+$/\1/p')
freeSwap=$(cat /proc/meminfo | sed -n 's/^SwapFree: \+\([0-9]\+\) \+[a-zA-Z]\+$/\1/p')
usedSwap=$(( $totalSwap - $freeSwap ))
usedPctSwap=$(( 100 * $usedSwap / $totalSwap ))

swapThreshold=85

if [[ $usedPctSwap -gt $swapThreshold ]]
then
    echo "Swap utilisation is at $usedPctSwap %" | mail -s "SWAP Utilisation Alert" your.email@yourdomain
fi

显然,您可以随意更改此设置以满足您的特定需求。例如,您可能有一种比简单的电子邮件更好的提醒方法。

然后您可以通过将其添加到 crontab 来安排此操作

答案4

这将为您提供totalfree, 数字:

cat /proc/meminfo |                  #read data
  grep -E "Swap((Total:)|(Free:))" | #just the two records that we need
  sed -re "s/[[:blank:]]+/ /g" |     #only one space field separator
  cut -d" " -f2                      #just the field that we need

然后你需要对他们做一些事情。也许这个:

(cat /proc/meminfo | 
   grep -E "Swap((Total:)|(Free:))" | 
   sed -re "s/[[:blank:]]+/ /g" | 
   cut -d" " -f2 && 
   echo "100 * r / 100 r - p" ) | 
     dc

相关内容