스왑 사용량이 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

관련 정보