![free -m 명령에서 사용된 개별 메모리 정보를 가져옵니다.](https://linux55.com/image/30072/free%20-m%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20%EC%82%AC%EC%9A%A9%EB%90%9C%20%EA%B0%9C%EB%B3%84%20%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EC%A0%95%EB%B3%B4%EB%A5%BC%20%EA%B0%80%EC%A0%B8%EC%98%B5%EB%8B%88%EB%8B%A4..png)
명령의 출력으로 free -m
다음을 얻습니다.
total used free shared buffers cached
Mem: 2496 2260 236 0 5 438
-/+ buffers/cache: 1816 680
Swap: 1949 68 1881
사용된 메모리(예: 2260)만 출력으로 가져오고 싶습니다. 다음 명령을 시도했습니다.
free -m | grep Mem | cut -f1 -d " "
제 지휘 능력을 향상할 수 있게 도와주세요.
35%라는 비율을 어떻게 구할 수 있나요?
답변1
awk
다음을 사용하기 위해 별도의 파이프가 필요하지 않습니다 grep
.
awk '/^Mem/ {print $3}' <(free -m)
레코드/행을 필터링하여 다음으로 시작하는 레코드/행을 찾고 Mem
세 번째 필드/열( )이 인쇄되어 필터링된 레코드를 표시합니다.$3
답변2
아니면 sed를 사용하세요:
free -m | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p'
또 다른 해결책은 다음과 같습니다.
free -m | grep ^Mem | tr -s ' ' | cut -d ' ' -f 3
두 번째 솔루션에 대한 크레딧은 다음과 같습니다.우편 엽서.
답변3
백분율로 표시하는 추가 질문은 (jasonwryan의 답변을 기준으로) 다음과 같습니다.
awk '/^Mem/ {printf("%u%%", 100*$3/$2);}' <(free -m)
세 번째 필드를 두 번째 필드로 나누어 백분율을 구하고 정수로 인쇄합니다(반올림하지 않음!).
편집하다: 이중 "%" printf
(인쇄를 위해 첫 번째 이스케이프된 리터럴 문자)를 추가했습니다.
답변4
FNR =2
출력의 두 번째 줄이며 {print $3}
사용된 세 번째 열을 인쇄합니다.
free -m | awk 'FNR == 2 {print $3}'