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