free -m 명령에서 사용된 개별 메모리 정보를 가져옵니다.

free -m 명령에서 사용된 개별 메모리 정보를 가져옵니다.

명령의 출력으로 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}'

관련 정보