강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
htop : top 보다 사용자 위주의 모니터링 도구
조회 : 14,905  


htop : top 보다 사용자 위주의 모니터링 도구


    작성자 : 정우영
    작성일 : 2014.02.13(목)
    대상 OS : SULinux Server 2014 64Bit
   

  많은 리눅스 서버를 관리하다 보면 서버를 관리하기 위해 SSH를 통해 원격 접속을 한다. 
 장애가 발생되었을 때도 SSH를 통해 접속한 상태에서 분석을 한다. 그렇다 보니 이러한 원격 터미널 환경에서
쉽고 편리하게 사용할 수 있는 도구를 찾게 되었다. 
  여기서 소개할 htop은 ncurses를 이용한 텍스트모드 대화식 프로세스 뷰어이다. 
스크린샷을 보면 top명령어의 결과를 더 보기 좋게 꾸민 것 밖에 없어 보이지만 아주 편리한 기능이 많이 있다.
우리는 MS윈도우즈에서 프로세스를 보기위해 "작업관리자"를 이용한다. 작업관리자는 프로세스에 대해 볼 수 있지만, 더 많은 정보를 보기위해 다른 프로그램을 이용해야 한다. 그래서 필자는 ProcessExplorer를 사용한다. 
MS에서 무료로 배포하는 프로그램으로 아주 강력한 프로세스 뷰어이다. 
  top을 주로 사용하는 나에게 htop을 만난것은 MS윈도우즈에서 ProcessExplorer를 만난기분이였다.

다음과 같은 좋은 기능이 있다. 
    - 프로세스 선택을 커서나, 마우스를 사용할 수 있다.
    - pstree와 top을 함께 보는 것 같은 기능이 있다.
    - 선택된 프로세스를 죽이거나, 우선순위를 변경할 수 있다.
    - 특정 프로세스 이름으로 검색, 필터링 하여 현황을 볼 수 있다.
    - 선택된 프로세스의 'lsof' 명령 결과를 볼 수 있다.
    - 선택된 프로세스의 시스템콜을 확인하는 strace 를 할 수 있다.
    - 마우스를 사용할 수 있다.

  위 기능은 top, pstree, ps 명령어로 해당 프로세스를 찾아내고, lsof, strace, renice등의 명령어 조합으로 결과를 얻을 수 있지만, 이러한 모든 번거로운 것들이 프로세스 선택하여 단축키를 눌러 볼 수 있다는 것이 환상적이다.  
    htop 설치부터 하나 하나 살펴보도록 하자.


1. htop 설치
    htop은 우분투 저장소에 이미 패키징 되어 제공되고, RHEL 5, 6에는 기본이 아닌 3rd party 저장소에서 제공한다. 조금 오래된 배포판의 경우 최신버전의 패키지를 구하기 어려우니 컴파일 하여 설치하는 방법을 알아보자.
참고로 SULinux 2014버전에는 "yum install htop" 을 통해 최신버전(1.0.2)를 설치 할 수 있다.


   1.1. 소스 다운로드 
       이렇게 좋은 소프트웨어를 사용하려 한다면, 한번쯤 배포하는 사이트에 방문하는 예의라고 생각한다.
     최신 버전의 기능 또한 확인도 하고

       배포사이트 : http://hisham.hm/htop/ 
 
      위 사이트에서 최신버전의 소스코드를 다운로드 한다.
      2014.02.13기준 1.0.2가 최신이다.


   1.2. 압축해제 및 일반적인 설치
tar xvfp htop-1.0.2.tar.gz 
  cd htop-1.0.2
./configure
make && make install

* 만약 libncurses 라이브러리 관련 오류가 난다면, 
           yum install ncurses*
    으로 관련 라이브러리를 설치 해 준다.


2. htop 사용
   위와 같이 설치하였다면 터미널 창에서 htop 이라고 입력하면 다음과 같은 화면이 나타난다.
  처음 봤을 때 top화면을 컬러로 표현 했구나 라고 생각했었다.
  자세히 살펴보면 CPU, 메모리 사용률이 막대 그래프로 표현되고, CPU 쓰레드수 만큼 그래프가 보인다.
  하단을 보게 되면 메뉴가 있다. 그리고 커서를 움직여 보면 모니터링 되고 있는 프로세스를 선택 할 수있다.
  기본적으로 1초에 한번씩 갱신된다.

  2.1. Help (도움말)
    아래 메뉴를 보면 "Help"가 보인다. 단축키는 "F1"이라고 되어 있어 "F1"키를 누르면, 터미널 프로그램의 도움말이 나타난다. "h"키를 눌러 보자. 그러면 아래 처럼 htop의 도움말을 볼 수 있을 것이다.
   답답하면 마우스로 클릭해도 아래 화면을 볼 수 있다.
   
   
   도움말을 보면 CPU, 메모리 막대 그래프 색깔별로 의미가 있다. 
   여러 기등들에 대한 단축키를 확인 할 수 있다. 아무키나 누르면 도움말 페이지에서 빠져나간다.
   

  2.2. Setup (설정)
     설정 메뉴가 왜 있을까 하며 "F2"키 또는 "S"(반드시 대문자 S키이다. 소문자 s는 strace이다.)키를 입력하였다.  
     상단에 보여줄 CPU, Mem등에 대한 정보를 추가/제거할 수 있다.
필자는 상단 왼쪽에 CPU전체에 대한 평균값을 보여주는 바를 추가했다.

여러가지 디스플레이 옵션이 있으니 선택해 보도록 하자. 필자는 아직까지 별 필요한 옵션이 없다.

컬러선택이다. 이것 저것 선택하고 Space키를 누르면 변경된다. 개인적으로 "MC"컬러를 선호한다.

프로세스 리스트에 보여줄 컬럼을 선택한다. 정말 말은 컬럼을 선택할 수있다. 필자는 어떤 프로세스가 어떤 프로세서에 할당되었는지 확인하기 위해 "PROCESSOR"를 선택 추가(F5) 했다. 

  모든 설정이 완료되었다면 "F10"키를 눌러 빠져나와야 한다. 대부분의 터미널 프로그램에서 "F10"키는 터미널 클라이언트의 메뉴가 나타난다.
이러한 경우 "ESC"키나 "q"키를 눌러 설정 메뉴에서 빠져 나오면 된다.


  2.3. Search (검색)
"F3"키 또는 "/"키를 눌러 프로세스를 검색할 수있다.
위 그림은 httpd 프로세스를 검색한 결과이다. 단어를 입력하는 순간 해당 이름의 프로세스를 찾아가 커서가 위치하게 된다. "F3"키를 다시입력하면 다음 결과를 찾게 된다.

  2.4. Filter (필터)
이거 아주 기가막힌 기능이다. 우리가 흔히 특정 프로세스만을 보기 위해 다음과 같이 명령어를 내린다.
         ps -ef |grep httpd
이 기능과 비슷하게 원하는 프로세스만 모니터링 하기위해 이 필터 기능을 사용한다.
"F4"키 또는 "\"키를 입력한다.
위 그림은 필터 기능을 이용하여 "httpd" 프로세스 이름에 문자가 들어가는 프로세스를 찾았다. 그리고 "Enter"키를 입력하면 필터링된 프로세스만 보이게 되며, 모든 htop의 기능을 수행할 수 있다.

  2.5. Tree (프로세스 트리)
프로세스의 부모 자식 관계를 확인하기 위해 pstree라는 명령어를 자주 사용한다. 
프로세스들을 트리 형태로 보여주는 기능으로 "F5"키 또는 "t"키를 입력하면 트리로 보여주거나 아니면 그 반대 기능을 한다.

그림과 같이 프로세스를 트리 구조로 볼 수 있어 편리하다.


  2.6. Sort (정렬)
    프로세스를 CPU, 메모리, 사용자, 프로세스 이름 등으로 정렬하여 보면 쉽게 시스템 상황을 모니터링 할 수 있다. "F6"키 또는 ">"키를 눌러 정렬의 기본이 될 컬럼을 선택할 수 있다.
보여주는 모든 컬럼을 기준으로 정렬을 할 수 있다. "I"키를 입력하면 정렬 순서를 바꿀 수 있다.
top 명령어와 같이 P(CPU), M(MEM), T(Time)키를 이용하여 정렬가능하다.

  2.7. 우선순위 조정
프로세스의 우선순위를 조절할 경우가 있다. 이러한 경우는 해당 프로세스의 PID를 찾아 renice명령어로 조절해야 하지만 htop에서는 선택된 프로세스의 우선순위로 "F7"키 또는 "]"키를 사용하여 높이며, "F8"키 또는 "["키를 사용하여, 우선순위를 내릴 수 있다. 

  2.8. Kill (프로세스 죽이기)
프로세스를 종료하기 위해서는 ps 명령어로 해당 프로세스의 PID를 찾아 kill -9 PID 명령어로 대부분 프로세스를 강제 종료시킨다. htop에서는 해당 프로세스 선택 후 "F9"키 또는 "k"키를 입력하여 선택된 프로세스를 쉽게 죽을 수 있다. 아래 그림과 같이 시그널을 선택할 수 있다. 
 물론 여러 프로세스를 한번에 죽이기 위해서는 프로세스를 "space"키로 선택하고 "F9"키를 눌러 시그널을 선택하여 죽이면 된다. 만약 잘못선택된 프로세스가 있다면 "U"키를 눌러 해당 프로세스의 선택을 취소 한다.
       

  2.9 프로세서 할당
실행중인 프로세스는 스케줄러에 의해 여러 CPU자원을 골고루 사용한다. 만약 해당 프로세스에서 사용할 수 있는 프로세서를 할당하기 위해서는 "a"키를 입력하여 다음 그림과 같이 할당하고자 하는 프로세서를 선택한다. 필자는 htop프로세스를 첫번째 CPU 쓰레드에 할당했다.


  2.10. 특정사용자의 프로세스 모니터링
실행중인 프로세스 중 특정 사용자의 프로세스만 보기 위해서는 "u"키를 입력한다. 다음과 같은 화면이 나타나면, 사용자를 선택하여 해당 사용자의 프로세스만을 모니터링 할 수 있다.


  2.12. IO 우선순위 변경
htop 1.0.2(최신버전)의 경우 "i"키를 입력하여 다음 그림과 같이 I/O 우선순위를 변경할 수 있다.

  2.11. 시스템 콜 트레이스 (strace)
htop에서 아주 마음에 드는 부분이 이 기능이다. 특정 프로세스 선택 후 "s"키를 누르게 되면, 해당 프로세스의 시스템 콜을 보여준다. 물론 PID를 알아낸 다음 strace 명령으로 확인 할 수 있으나 번거로운 일이다. 
위 그림은 httpd 프로세스의 시스템콜을 확인 한 것이다. 


  2.12. 열린파일 확인 (lsof)  
lsof 명령어를 통해 특정 프로세스에서 열고 있는 파일을 확인 할 수있다. 이 또한 htop에서는 프로세스를 선택하고 "l"키를 누르면 아주 쉽게 볼 수 있다.
위 그림은 htop에서 열고 있는 파일을 확인한 것이다.  "F5"키를 입력하여 리플레시 할 수 있다.

  2.13. 기타 기능
- 모니터링 화면에서 숫자를 입력하면 입력된 숫자해 해당되는 PID를 가진 프로세스를 찾는다.
- "H"키를 입력하여 Thread를 보여주거나 그렇지 않게 할 수 있다.
- "K"키를 입력하여 커널 Thread를 보여주거나 그렇지 않게 할 수 있다.
- 트리모드 일 때 "+", "-"키를 이용하여 트리를 펼치거나 접을 수 있다.
- "q"키를 입력하면 빠져나간다.

  
  이상으로 htop에 대한 강좌를 마무리 합니다. htop의 매력에 빠지면 다른 툴은 눈에 보이지 않을 것입니다. 강좌의 설명에 있어 오타가 있거나, 내용이 다른 부분이 있으면 언제든지 doly골뱅이superuser.co.kr으로 신고 해 주시기 바랍니다. 2014년 이렇게 좋은 것이 있다는 것을 많은 사람들에게 알려 주고 싶어하는 doly가...


   


  















    


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1791


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
도리
도리(Doly)
(주)수퍼유저 기술이사 (CTO)
리눅스마스터 1급,2급 추천교재(2014년) 집필
리눅스마스터 1급,2급 전문위원(출제)(한국정보통신진흥협회, 2005년~)
SULinux 1.0, 1.5, 2.0, 2014 개발 총괄(sulinux.net, 1998년~)
SSU,LSCP,LSMP,CCMT외 다수 오픈소스 프로젝트 개발 및 운용 (lscp.sf.net외,2009년~)
리눅스 대량 시스템 구축 및 관리(5,000대리눅스 서버 구축 및 관리 경험, 2000년~)

E-Mail : doly골뺑이superuser.co.kr
소개 : 하루 하루 최선을 다합시다!!