top 반복에서 텍스트 추출

top 반복에서 텍스트 추출

Bash 스크립트에서 top 명령을 실행하고 싶습니다

문제는 일반적으로 콘솔에 top 명령을 입력할 때 Ctrl+를 눌러 종료한다는 것 입니다 C.

하지만 topbash 스크립트에서 명령을 실행할 때 어떻게 종료합니까?top

예를 들어 bash의 상단에서 사용 가능한 메모리를 인쇄하는 방법은 무엇입니까?

다음을 수행했지만 설명한 대로 명령이 값을 반환하지 않습니다.

 top | grep Mem: | awk '{print $6" "$7}'

콘솔에서 top을 실행할 때:

  top

  top - 17:55:24 up 20 days,  8:05,  3 users,  load average: 0.08, 0.08, 0.04
  Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
  Cpu(s):  1.0%us,  3.2%sy,  0.0%ni, 95.2%id,  0.5%wa,  0.0%hi,  0.0%si,  0.0%st
  Mem:   2075516k total,  1731156k used,   344360k free,   373308k buffers
  Swap:  4192924k total,       76k used,  4192848k free,  1130448k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+       COMMAND                                                               
   1 root      15   0  2072  656  568 S  0.0  0.0   0:01.36 init     
 .
 .
 .

답변1

옵션 관점에서 볼 때 @jimmij의 대답은 좋습니다 top. 그러나 출력 형식을 top이식 가능한 방식으로 신뢰할 수 없는 것처럼 보입니다.

해당 유틸리티가 없다고 말씀하셨지만 free이것은 단지 인터페이스에 대한 래퍼일 뿐이며 /proc/meminfo거의 확실히 그렇습니다. 말의 입(커널)에서 직접 필요한 정보를 얻으십시오.

$ grep MemFree: /proc/meminfo
MemFree:           75916 kB
$ 

또는 다음을 통해 단일 숫자로 형식을 지정하려는 경우 awk:

$ awk '$1=="MemFree:" {print $2}' < /proc/meminfo
74320
$ 

답변2

이 시도:

top -bn1 | awk '$1=="Mem:" {print $6" "$7}'

관련 정보