본문 바로가기
개발/리눅스

리눅스 시스템 모니터링, top

by 왼하루 2024. 3. 16.
반응형

리눅스 시스템 모니터링, top 명령어를 완벽히 활용하기

리눅스 서버를 운영하는 관리자라면 top 명령어를 자주 사용하게 될 것입니다. top 명령어는 시스템 모니터링 도구 중 가장 기본적이며 필수적인 도구입니다. 이 명령어를 통해 현재 시스템 상태와 프로세스 정보를 실시간으로 확인할 수 있습니다. 그렇다면 top 명령어를 어떻게 효과적으로 활용할 수 있을까요?

top 명령어의 기본 정보

top 명령어를 실행하면 다음과 같은 화면이 나타납니다.

top - 09:49:36 up 136 days, 18:03, 1 user, load average: 0.28, 0.42, 0.42 Tasks: 283 total, 2 running, 281 sleeping, 0 stopped, 0 zombie %Cpu(s): 4.3 us, 1.5 sy, 0.0 ni, 94.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 32790.0 total, 20054.7 free, 2393.7 used, 10341.6 buff/cache MiB Swap: 976.0 total, 908.6 free, 67.4 used. 28286.5 avail Mem 

상단에는 시스템 전반적인 상황을 보여줍니다. 현재 시간, 시스템 업타임, 로그인한 사용자 수, 로드 평균(load average) 등의 정보가 있습니다. 로드 평균이 1.0 이상이면 CPU에 부하가 많이 걸린 상태입니다.

프로세스 정보

 
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
2852 myuser 20 0 818388 65820 50088 S 6.2 0.2 5:27.75 Code 
9721 myuser 20 0 696144 79380 56748 S 3.8 0.2 0:58.51 Cider 
2704 myuser 20 0 3281404 477496 142900 S 2.5 1.5 68:11.16 jetbrains- 
7114 myuser 20 0 5144692 1.3gb 193612 S 1.6 4.1 32:36.83 WebContent 
2525 root 20 0 0 0 0 I 0.3 0.0 0:07.91 kworker/1 
5359 myuser 20 0 236452 13844 8808 S 0.3 0.0 0:02.19 sshd:mana 

중간 부분에는 실행 중인 프로세스 목록이 나옵니다. PID, 사용자, 프로세스 우선순위, 가상 메모리 사용량, 실제 메모리 사용량, CPU 및 메모리 사용률, 실행 시간, 프로세스 명 등의 정보를 제공합니다.

top 명령어 주요 키 조작

top 명령어에서는 키보드 입력을 통해 다양한 기능을 제어할 수 있습니다.

정렬 기능

  • P : CPU 사용률 내림차순 정렬
  • M : 메모리 사용량 내림차순 정렬
  • N : PID 순서대로 정렬

모니터링 범위 지정

  • u : 특정 사용자 프로세스만 보기
  • k : 특정 PID의 프로세스 종료하기
  • r : 어떤 프로세스가 많은 리소스를 사용하는지 확인

화면 전환

  • l : 로드 평균 관련 정보 토글
  • m : 메모리 정보 토글
  • t : 프로세스와 CPU 정보 간 토글
  • c : 전체 명령어 라인 표시 토글

리소스 집중형 프로세스 확인

서버를 모니터링할 때 리소스 집중형 프로세스를 파악하는 것이 중요합니다. top 명령어를 통해 CPU나 메모리를 많이 사용하는 프로세스를 쉽게 찾을 수 있습니다.

CPU 집중형 프로세스

 
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
18021 myuser 20 0 2573332 1.2gb 42428 R 103.4 3.8 0:07.11 java 

위 예시에서 해당 프로세스는 CPU 사용률이 103%에 달합니다. CPU 코어 개수를 고려했을 때 단일 프로세스로는 매우 높은 수치입니다. 이런 프로세스를 계속 방치하면 시스템 전체에 영향을 줄 수 있습니다.

메모리 집중형 프로세스

 
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
15324 myuser 20 0 7435192 4.0gb 82492 S 1.0 12.6 0:01.32 tensorfl 

이 프로세스는 4GB의 실제 메모리(RES)를 사용하고 있습니다. 시스템 전체 메모리 대비 12.6%에 해당하는 큰 부하입니다. 메모리 부족으로 인한 스와핑(swapping) 발생 시 전체 시스템 성능이 크게 저하될 수 있습니다.

top 명령어 활용 팁

top 명령어를 보다 효과적으로 활용하기 위한 팁을 알아보겠습니다.

배치 모드 활용

$ top -b -n 1 > top.log

일반적으로 top 명령어는 대화형 모드로 작동합니다. 하지만 위와 같이 -b 옵션-n 옵션을 사용하면 지정한 횟수만큼 일회성 출력 내용을 파일로 저장할 수 있습니다.

사용자 지정 모니터링

$ top -u myuser -d 5 

위 명령어는 5초마다 새 정보를 갱신하면서 'myuser' 사용자의 프로세스만 보여줍니다. 이렇게 -u 옵션-d 옵션을 함께 사용하면 특정 사용자 및 갱신 주기를 지정할 수 있습니다.

결론

지금까지 리눅스 시스템 모니터링 도구 중 대표적인 top 명령어에 대해 알아보았습니다. top 명령어를 잘 활용하면 현재 시스템 상태를 실시간으로 파악할 수 있고, 문제가 될 수 있는 프로세스를 미리 확인하여 대응할 수 있습니다. 서버 관리에 있어 top 명령어는 필수적인 도구라고 할 수 있겠습니다. 앞으로도 꾸준히 활용해 나가길 바랍니다.

FAQ

로드 평균(load average)이 높으면 어떤 의미인가요?

로드 평균이 높다는 것은 대기 중인 프로세스가 많다는 뜻입니다. 1.0을 초과하면 CPU에 부하가 많이 걸린 상태라고 볼 수 있습니다.

메모리 사용률이 높으면 어떤 문제가 있나요?

메모리 사용률이 지나치게 높으면 스와핑이 발생할 수 있습니다. 이 경우 전체 시스템 성능이 크게 저하되므로 메모리 사용량을 모니터링하는 것이 중요합니다.

top 명령어에서 프로세스를 종료하려면 어떻게 해야 하나요?

프로세스를 종료하려면 top 명령어에서 'k'를 입력한 다음 종료할 프로세스의 PID를 입력하면 됩니다. 주의해야 할 점은 시스템에 중요한 프로세스를 잘못 종료하면 안 된다는 것입니다.

top 명령어에서 메모리 사용량을 MB 단위로 볼 수 있나요?

네, 가능합니다. 'E'를 입력하면 메모리 단위를 변경할 수 있는 옵션 메뉴가 나옵니다. 여기서 'M'을 선택하면 메모리 단위가 MB로 변경됩니다.

top 명령어에서 특정 프로세스만 모니터링하려면 어떻게 해야 하나요?

top 명령어 실행 후 'u'를 입력하면 특정 사용자의 프로세스만 모니터링할 수 있습니다. 또한 '/'를 입력하면 프로세스 이름으로 검색할 수 있습니다.

댓글