Sun Solaris 시스템의 메모리 사용률을 % 백분율 형식으로 얻고 싶습니다.
vmstat 1 1 | tail -1 | awk 'a=`/usr/sbin/prtconf|fgrep Memory|awk '{print $3*1024}'{ print 100-($5/$a)*100}'
다음 오류가 발생합니다.
awk: syntax error near line 1
awk: bailing out near line 1
또한 이 쿼리에 대한 대안이 있는지 제안해 주세요.
답변1
Solaris awk
(스위치 없음 -v
또는 변수 설정 허용)를 사용하고 원시 쿼리로 시작하면 다음을 수행할 수 있습니다.
여유 메모리 비율:
a=$(/usr/sbin/prtconf | /usr/bin/awk '/Memory/ {print $3*1024}'); vmstat 1 1 | tail -1 | awk "{print (\$5/$a)*100}"
사용된 메모리 비율:
a=$(/usr/sbin/prtconf | /usr/bin/awk '/Memory/ {print $3*1024}'); vmstat 1 1 | tail -1 | awk "{print 100-(\$5/$a)*100}"
먼저 셸에서 변수를 할당한 다음 vmstat
셸 변수 대체를 사용하여 쿼리를 실행합니다. 이를 위해서는 큰따옴표를 사용 하고 변수를 awk
이스케이프해야 합니다. 두 가지 모두를 최대한 활용하기 위해 둘 중 하나를 함께 사용할 awk
필요는 없습니다 .fgrep
awk
awk
제가 사용 가능한 Opensolaris에서 테스트되었으므로 YMMV입니다.
답변2
echo ::memstat | mdb -k
커널, zfs, 사용자 및 여유 메모리의 사용률이 생성됩니다.
루트가 되어야 합니다.