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