리눅스 튜토리얼 · 3 min read · Oct 16, 2025
top에서 값을 추출하고 플로팅하는 방법
top에서 값을 추출하고 플로팅하는 방법
By: Showayb Zahda+
많은 성능 평가 및 벤치마킹을 수행하는 연구자들은 CPU와 RAM의 값을 캡처해야 합니다. 다른 연구자들은 처리량을 캡처해야 할 수도 있습니다. 이 짧은 튜토리얼에서는 “top”에서 CPU와 RAM 값을 캡처한 다음 한 줄 명령으로 추출하는 방법을 보여드리겠습니다.
top 출력 결과를 캡처하고 저장하려면 배치 모드 “top -b”를 사용하세요. 기본적으로 top은 10초마다 읽기를 업데이트합니다. 그러나 일부 연구자들은 매초 값을 필요로 합니다. 매개변수 d를 전달하면 쉽게 해결됩니다. 명령은 “top -b -d 1”이 됩니다. 여기서 1은 1초를 의미합니다. 이 명령은 매초 top 출력을 캡처합니다. 하지만 아직 끝나지 않았습니다. 출력을 파일에 저장해야 합니다. 쉽게 할 수 있습니다. 출력을 파일로 리디렉션하세요:
top -b -d 1 > top.txt실험이 끝나면 “ctrl + c”를 눌러 top을 중지하는 것을 잊지 마세요. 이제 많은 줄이 있는 파일이 생겼고, 그 중 필요한 것은 줄의 일부뿐입니다. 다행히도 출력 형식이 고정되어 있어 값을 추출하는 것이 매우 쉽습니다.
다음은 top의 한 초의 일부입니다. 출력을 보면 Cpu(s)로 시작하는 줄과 그 다음 줄에 Mem:이 있는 것을 볼 수 있습니다. 사실 우리는 이 줄의 일부만 필요합니다. 그렇다면 어떻게 해야 할까요?
top 18: 54:43 up 4:05, 2 users, load average: 3.64, 2.35, 1.37
Tasks: 135 total, 6 running, 129 sleeping, 0 stopped, 0 zombie
Cpu(s): 19.2%us, 19.7%sy, 0.0%ni, 61.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2054160k total, 2016144k used, 38016k free, 12292k buffers
Swap: 4417864k total, 38360k used, 4379504k free, 1310488k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6929 shuaib 15 0 173m 12m 8940 R 65 0.6 7:22.44 gtkgnash
6916 shuaib 15 0 525m 58m 22m S 6 2.9 0:56.39 totem
5717 root 15 0 491m 87m 12m S 3 4.4 2:13.24 Xorg리눅스에 익숙하지 않다면 이상하게 보일 수 있지만, 어쨌든 제가 제공할 명령어를 사용하여 작업을 완료하세요. 제가 사용할 명령어는 cat, grep, cut, nl입니다. 이들을 파이프라인과 함께 사용하여 모든 것을 한 줄 명령으로 만들 것입니다. :)
cat top.txt | grep Cpu이 명령은 다음과 같은 결과를 보여줄 것입니다:
Cpu(s): 14.3%us, 7.4%sy, 0.0%ni, 73.9%id, 0.0%wa, 0.0%hi, 4.4%si, 0.0%st
Cpu(s): 15.3%us, 7.4%sy, 0.0%ni, 72.4%id, 0.0%wa, 0.0%hi, 4.9%si, 0.0%st
Cpu(s): 11.7%us, 5.4%sy, 0.0%ni, 76.6%id, 2.9%wa, 0.5%hi, 2.9%si, 0.0%st
Cpu(s): 19.6%us, 9.3%sy, 0.0%ni, 66.7%id, 0.0%wa, 0.0%hi, 4.4%si, 0.0%st
Cpu(s): 14.8%us, 9.9%sy, 0.0%ni, 70.4%id, 0.0%wa, 0.5%hi, 4.4%si, 0.0%st
Cpu(s): 16.2%us, 9.3%sy, 0.0%ni, 67.2%id, 0.0%wa, 0.0%hi, 7.4%si, 0.0%st
Cpu(s): 12.3%us, 8.9%sy, 0.0%ni, 72.4%id, 0.0%wa, 0.0%hi, 6.4%si, 0.0%st
Cpu(s): 19.2%us, 11.8%sy, 0.0%ni, 63.1%id, 1.0%wa, 0.0%hi, 4.9%si, 0.0%st
Cpu(s): 16.2%us, 10.3%sy, 0.0%ni, 68.1%id, 0.0%wa, 0.5%hi, 4.9%si, 0.0%st
Cpu(s): 17.7%us, 9.9%sy, 0.0%ni, 68.5%id, 0.0%wa, 0.0%hi, 3.9%si, 0.0%st
Cpu(s): 15.7%us, 9.8%sy, 0.0%ni, 70.6%id, 0.0%wa, 0.0%hi, 3.9%si, 0.0%st
Cpu(s): 13.7%us, 7.4%sy, 0.0%ni, 74.0%id, 0.0%wa, 0.0%hi, 4.9%si, 0.0%st우와, 이건 마법입니다. 마음에 드신다면 그렇게 생각하세요. 어쨌든 각 CPU 줄은 1초 동안의 CPU 읽기를 나타냅니다. 하지만 이 줄의 유휴 값, 예를 들어 “68.1%id,”가 필요하다고 가정해 보겠습니다. 이제 잘라내기 명령이 필요합니다. cut 명령은 파일이나 표준 출력에서 열 번호에 따라 데이터를 잘라냅니다. 열 번호는 줄의 문자 수입니다. 모든 것이 1로 계산됩니다. 즉, %는 1, 공백은 1, 5는 1 열입니다. 열을 세는 방법은 텍스트 편집기를 사용하여 편집기 하단에서 열 번호를 읽거나 수동으로 할 수 있습니다.
텍스트 편집기를 사용하여 35에서 39까지의 열이 유휴 값을 나타낸다는 것을 알았습니다. 그렇다면 어떻게 잘라낼까요? 명령을 계속 진행합니다:
cat top.txt | grep Cpu | cut -c 35-39출력은 다음과 같습니다:
73.9
72.4
76.6
66.7
70.4
67.2
72.4
63.1
68.1
68.5
70.6
74.0
우와, 또 다른 마법입니다. 좋습니다. cut -c 35-39는 입력에서 35에서 39까지의 열을 잘라내어 터미널에 출력합니다. 따라서 %us 부분을 캡처하고 싶다면 열을 세고 교체하면 됩니다. 우리가 매초 값을 캡처했음을 기억하세요. 그렇다면 초를 추가하는 방법은 쉽습니다. nl : 줄 번호를 사용하세요:
cat top.txt | grep Cpu | cut -c 35-39 | nl1 73.9
2 72.4
3 76.6
4 66.7
5 70.4
6 67.2
7 72.4
8 63.1
9 68.1
10 68.5
11 70.6
12 74.0
좋습니다. 만약 top을 매 3초마다 캡처한다면 이렇게 할 수 있습니다:
cat top.txt | grep Cpu | cut -c 35-39 | nl -i 31 73.9
4 72.4
7 76.6
10 66.7
13 70.4
16 67.2
19 72.4
22 63.1
25 68.1
28 68.5
31 70.6
34 74.0우와, 이것도 환상적입니다. 이제 출력을 파일로 리디렉션하세요:
cat top.txt | grep Cpu | cut -c 35-39 | nl > cpu.txt파일을 gnuplot 또는 다른 플로팅 소프트웨어로 가져가서 즐기세요.

Mem 부분은 같은 단계를 따르되 매개변수를 변경하여 수행할 차례라고 생각합니다.
Cheers
Showayb A A Zahda
[email protected]
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.