スワップ使用率が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

totalこれにより、合計free、数字が提供されます。

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

関連情報