김현우
  • 리눅스 한 학기 살기 - 11주차
    2025년 05월 30일 21시 01분 25초에 업로드 된 글입니다.
    작성자: kugorang
    728x90
    728x90

    들어가며

    CPU 막대 그래프를 연상시키는 컬러 바로 썸네일을 제작했다.이

    이번 주차에서 다룰 프로그램은 htop이다. 자세한 내용은 아래에 소개하겠지만, htop는 Windows로 치면 작업 관리자의 역할을 수행한다고 이해하면 될 것 같다. 라즈베리파이를 서버용 기기로 구매했으니, 꼼꼼한 모니터링은 당연지사. 여러 개의 프로그램이 존재했으나, 그 중에 하나인 htop을 깊게 파고 들었다.

     

    htop 명령어 개요와 목적 (top 명령어와의 차이)

    htop은 리눅스/유닉스 계열 OS에서 시스템의 프로세스와 자원 사용량을 실시간으로 모니터링하는 대화형 터미널 프로그램이다. 기본적으로 모든 리눅스 배포판에 포함된 전통적인 명령어 top의 기능을 현대적으로 개선한 대안 도구로서, 컬러풀한 UI강화된 사용자 인터페이스를 제공한다[^1]. top이 단순 텍스트 기반 출력으로 상위 프로세스만 보여주고 조작이 불편한 반면, htop은 전체 프로세스 목록을 스크롤하여 확인할 수 있고, 마우스로 항목 선택이 가능하며, 키보드 단축키로 다양한 조작을 즉시 수행할 수 있다.

     

    htop이 top 대비 갖는 주요 장점은 다음과 같다.

    • 쾌적한 인터페이스: CPU, 메모리, 스왑 사용량을 막대 그래프(bar)로 색상 표시하여 한눈에 자원 사용 현황을 보여준다. 프로세스 목록도 색상으로 구분되어 가독성이 높다 (예: 커널 프로세스는 빨간색, 일반 프로세스는 초록색 등)[^4]. 명령어 행도 화면 폭에 따라 잘리는 부분 없이 수평 스크롤로 전체 내용을 볼 수 있다.
    • 향상된 조작성: 방향키로 프로세스 목록을 위아래로 스크롤하여 모든 프로세스를 탐색할 수 있으며, 페이지 업/다운키로 한 화면씩 이동도 가능하다. 마우스 지원으로 프로세스를 클릭 선택할 수 있고, 단축키로 실시간 검색(F3), 필터(F4), 정렬 변경(F6) 등을 직관적으로 수행할 수 있다[^2]. 별도의 PID 입력 없이도, 특정 프로세스를 선택한 뒤 F9 키 하나로 프로세스 종료(Kill)를 할 수 있고, F7/F8 키로 프로세스 우선순위(Nice 값)를 상향/하향 조정할 수 있다. 이처럼 htop은 top에 비해 즉각적인 프로세스 제어편리한 상호작용을 지원하여 시스템 모니터링 업무의 효율을 높여준다.
    • 부가 기능: 다중 프로세스 관리를 위해 여러 프로세스 동시 선택 후 일괄 종료도 가능하며(스페이스바로 프로세스 선택 후 F9), 하나의 프로세스에 대한 상세 정보 조회도 지원한다. 예를 들어 프로세스를 선택한 상태에서 s 키를 누르면 해당 프로세스에 strace를 연결하여 시스템 호출 추적을 실시간 출력하고, l 키를 누르면 lsof를 통해 그 프로세스가 열고 있는 파일 목록을 바로 보여주는 식이다. 이러한 기능들은 top에는 없는 htop만의 고급 기능으로, 개발이나 디버깅 시 유용하게 활용될 수 있다.

     

    이러한 개선 덕분에 htop은 top 대비 훨씬 직관적이고 편리하며, 시스템 상태 파악과 프로세스 관리에 소요되는 수고를 크게 줄여준다. 실제로 많은 리눅스 사용자가 새 시스템을 설치하면 가장 먼저 htop을 설치할 정도로, 표준 모니터링 툴의 역할을 top에서 htop으로 대체하고 있다.

     

    또한 htop은 초기 리눅스 전용으로 개발되었으나 현재는 크로스플랫폼으로 진화하여, Linux뿐만 아니라 BSD 계열, macOS, Solaris 등 다양한 OS에서 사용 가능하다 (2.x 버전 이후). 전반적으로 htop은 top의 철학을 잇되 현대적 UI/UX와 부가 기능을 더해 시스템 모니터링 경험을 향상시킨 도구이다.

     

    htop은 top의 대안으로 개발된 대화형 프로세스 뷰어이다. 컬러 풀한 막대 그래프와 스크롤 가능한 목록을 통해 CPU, 메모리 등의 실시간 사용량을 직관적으로 시각화하며, 마우스/단축키 조작으로 프로세스 검색, 정렬, 종료 등을 간편하게 수행할 수 있다. top에 비해 사용자 친화적 인터페이스와 다양한 기능을 제공하여, 서버 관리자부터 일반 사용자까지 널리 애용되는 모니터링 툴이다.

     

    CLI 인터페이스 구조 및 주요 키 조작 방식

    htop의 화면 구성은 크게 세 부분으로 나뉜다.

    1. 상단 헤더(Header) – CPU, 메모리, 스왑(Swap) 사용량을 나타내는 그래프와 시스템 부하 지표가 표시된다. 좌측에는 여러 개의 "CPU#" 막대가 있으며, 각 CPU 코어별 사용률(%)을 실시간으로 보여준다. 막대의 색상은 사용 중인 작업의 성격을 나타내는데, 일반 사용자 프로세스에 의한 CPU 사용률은 녹색, 낮은 우선순위(nice) 프로세스는 파란색, 시스템 커널 영역 사용률은 빨간색으로 표시된다. 이는 CPU 사용이 어디에서 발생하는지 직관적으로 파악하도록 돕는다. 헤더 우측에는 Tasks(태스크 수), load average(부하율), uptime(가동 시간) 정보가 나온다. 예를 들어 Tasks: 100, 2 running은 총 100개의 프로세스(스레드 포함) 중 2개가 현재 실행 중임을 의미한다. Load average는 최근 1분, 5분, 15분간의 평균 부하를 나타내는데, 각각 숫자 3개로 표시된다. 이 값이 CPU 코어 수와 비슷하거나 그보다 높으면 시스템이 바쁜 상태임을 뜻한다. Uptime은 시스템이 부팅된 후 경과한 시간으로, 안정성 및 연속 가동 시간을 보여준다.
    2. 중간 프로세스 목록 영역 – 현재 실행 중인 프로세스들의 상세 정보 리스트가 표 형태로 나타난다. 기본적으로 CPU 사용률 기준으로 내림차순 정렬되어 가장 많은 CPU를 소비하는 프로세스가 최상단에 온다. 각 행에는 프로세스의 PID, 사용자명, 우선순위(PR), nice값(NI), 메모리 점유(VIRT/RES), CPU%, 메모리%, 실행 시간(TIME+) 그리고 명령어 이름 등이 열로 표시된다. 이 목록은 터미널 창 크기에 맞춰 보여지며, 표시 다 못한 부분은 아래로 스크롤해서 볼 수 있다. 프로세스 이름이 길 경우 명령행 전체를 가로로 스크롤해 확인할 수 있다. 색상 강조도 되어 있어서, 예를 들어 메모리 사용률이 높은 프로세스는 해당 %칸이 굵게 표시되기도 한다. htop 실행 시 기본으로 쓰레드 포함 전체 프로세스가 나열되는데, 옵션이나 설정에 따라 커널 쓰레드(K)사용자 쓰레드(H)의 표시를 토글하여 숨길 수도 있다. 또한 트리(Tree) 보기로 전환하면 프로세스의 부모-자식 관계를 계층 구조로 볼 수 있어, 데몬 프로세스가 생성한 작업들을 한눈에 파악할 수 있다 (하단에 F5 (Tree)로 표시).
    3. 하단 푸터(Footer) – 화면 맨 아래에는 현재 htop에서 활용 가능한 명령 키 목록이 안내된다. 기본적으로 F1~F10 함수키에 해당하는 주요 동작이 나열되는데, 터미널 종류에 따라 함수키 동작이 제한될 수 있으므로 대체 단축키도 함께 제공된다. 예를 들어 F1은 도움말이지만 h 또는 ? 키로도 동일하게 Help 창을 열 수 있고, F2는 설정 메뉴이지만 S 키 (대문자 S)로도 열 수 있다. 이처럼 화면 하단을 보면 F3=Search, F4=Filter, F5=Tree, F6=SortBy, F7=Nice–, F8=Nice++, F9=Kill, F10=Quit 등의 키 안내가 실시간으로 표시되어 사용자가 필요할 때 참고할 수 있다.
    4. 예를 들어 htop을 실행한 기본 화면을 살펴보면, 상단에는 각 CPU 코어의 실시간 사용률이 색상 막대로 표시되고 우측에 Tasks, Load Average, Uptime 정보가 보인다. 중간에는 현재 동작 중인 프로세스들이 목록으로 나열되어 CPU%, 메모리% 등의 자원 점유율과 함께 표시된다. 사용자는 방향키로 이 목록을 스크롤하여 모든 프로세스를 확인할 수 있다. 하단에는 F1~F10 함수키에 대응하는 도움말이 있어, F3을 눌러 프로세스 이름 검색, F4로 프로세스 필터링, F5트리 구조 토글, F6으로 정렬 기준 변경 등을 할 수 있음을 알려준다. 이처럼 htop의 인터페이스는 한 화면에 핵심 시스템 상태를 시각화하고, 하단 안내를 통해 초보자도 쉽게 상호작용할 수 있게 설계되어 있다.

     

    주요 단축키 조작 방식: htop에서는 다양한 키보드 입력을 통해 인터랙티브한 기능을 사용할 수 있다. 많이 사용하는 조작 키를 요약하면 다음과 같다.

    • 화살표키, PgUp/PgDn: 프로세스 목록을 이동하여 스크롤함 (항목이 화면을 넘어갈 경우 탐색). Home/End 키로 리스트의 시작/끝으로 바로 이동 가능.
    • 숫자 1~9 입력: 해당 PID를 가진 프로세스로 바로 이동 (PID 직접 검색 기능).
    • Space: 현재 선택한 프로세스를 태그(선택)함. 여러 프로세스에 태그를 걸어두면 이후 Kill(F9) 등의 명령을 한꺼번에 적용할 수 있다. U 키를 누르면 모든 태그를 한 번에 해제한다.
    • F3 또는 '/' 키: 검색(Search) – 프로세스 명령줄에 입력한 문자열이 포함된 프로세스를 실시간으로 검색한다. 검색어 입력 시 매칭되는 프로세스로 즉시 이동하며, Enter 없이도 필터링된다. F3을 반복 누르면 다음 일치 항목으로 순차 이동한다.
    • F4 또는 '' 키: 필터(Filter) – 입력한 문자열이 포함된 프로세스만 목록에 필터링해서 표시한다. 필터모드에서 Esc를 누르면 필터를 해제하여 전체 목록으로 돌아간다.
    • F5 또는 't' 키: 트리(Tree) 보기 토글 – 부모-자식 관계를 트리 형식으로 표시하여 프로세스 계층 구조를 보여준다. 다시 누르면 이전의 정렬 보기로 돌아온다.
    • F6 또는 '<' '>' 키: 정렬 기준 변경 – CPU%, 메모리%, 시간 등 정렬할 컬럼을 선택한다. 엔터 치면 해당 컬럼으로 정렬되며, 기본 뷰에서는 현재 정렬 기준 열 머리글이 강조되어 표시된다.
    • F7/F8 또는 ']'/'[' 키: 프로세스 우선순위 (niceness) 조정 – F7은 선택 프로세스의 nice 값을 감소시켜 우선순위를 높이고(더 많은 CPU 할당), F8은 nice 값을 증가시켜 우선순위를 낮춘다 (superuser 권한 필요).
    • F9 또는 'k' 키: 프로세스 종료(Kill) – 선택한 프로세스에 보낼 시그널을 선택하는 메뉴가 뜬다. 일반적으로 15 (TERM, 정상 종료 요청) 또는 9 (KILL, 강제 종료) 시그널을 보내 프로세스를 종료할 수 있다. 다중 선택된 경우 태그된 모든 프로세스에 신호가 보내진다.
    • F10 또는 'q' 키: htop 종료 – 프로그램을 빠져나와 모니터링을 중단한다.

     

    이 밖에도 htop에는 고급 단축키들이 존재한다. 예를 들어 a는 다중 CPU 시스템에서 CPU Affinity 설정 (특정 CPU 코어에 프로세스 할당) 창을 띄우고, p는 프로세스 실행 경로를 전체 경로로 토글 표시하며, Ctrl+L은 화면을 갱신(refresh)하는 등의 기능이 있다. 하지만 이러한 고급 기능들은 일반적인 사용 범위를 넘어서므로, 초보자는 기본 화면 조작과 F키 위주 기능만 익혀도 충분하다. htop 실행 중 F1 (Help)을 누르면 전체 단축키 목록과 기능 설명을 볼 수 있으므로 필요시 참고하면 된다.

     

    정리하면, htop의 CLI 인터페이스는 헤더-프로세스 목록-푸터의 3단 구성으로 이루어져 CPU/메모리 등 요약 정보상세 프로세스 목록을 동시에 제공하며, 다양한 키 조작을 통해 실시간으로 시스템을 모니터링하고 관리할 수 있게 한다. 이러한 직관적인 UI와 단축키 지원은 초보자도 금방 익숙해질 수 있을 정도로 사용성을 높여주며, 필요한 경우 강력한 기능까지 활용할 수 있게 설계되어 있다.

     

    자주 사용하는 옵션 및 커맨드라인 파라미터 분석

    htop은 기본적으로 터미널에서 htop 명령만 입력하면 인터랙티브 화면이 뜨지만, 필요에 따라 몇 가지 유용한 옵션을 함께 줄 수 있다. 다음은 자주 활용되는 htop 실행 옵션 및 그 역할이다.

    • -d <delay> – 업데이트 주기 설정. 기본 갱신 주기는 1초이지만, -d 옵션으로 화면 새로고침 간격을 1/10초 단위로 지정할 수 있다. 예를 들어 htop -d 10이면 약 1.0초 간격, -d 5이면 0.5초 간격으로 데이터 갱신을 수행한다. 시스템 부하가 높아 화면 잔상이 남거나 너무 빈번히 갱신될 경우 이 옵션으로 주기를 늘려 CPU 소모를 줄일 수 있다.
    • -s <column>정렬 기준 설정. htop 실행 시 기본 정렬 컬럼을 지정한다. 예를 들어 htop -s PERCENT_MEM처럼 사용하면 시작부터 메모리 사용률 순으로 정렬된 화면을 볼 수 있다. (--sort-key 옵션으로도 동일하게 지정 가능)
    • -t트리 모드로 시작. htop을 실행하자마자 프로세스 트리 계층 구조로 표시한다. (-s와 함께 사용하면 지정한 정렬 기준으로 트리 정렬을 적용)
    • -p <PID,PID...>특정 PID들만 모니터링. 쉼표로 구분된 하나 또는 여러 개의 PID를 지정하면, 해당 프로세스들만 목록에 표시된다. 이를 통해 관심 있는 프로세스만 집중 모니터링할 때 유용하다. (해당 PID의 자식 프로세스들도 포함해서 보려면 실행 후 트리 모드를 켜면 된다)
    • -u <username>특정 사용자 소유 프로세스만 표시. 지정한 사용자 계정이 실행한 프로세스들만 필터링하여 보여준다. 예를 들어 htop -u www-data로 웹서버 사용자 프로세스들만 확인 가능하다.
    • -C 또는 --no-color컬러 출력 비활성화. htop의 색상 출력이 보이지 않거나 컬러 없이 모노크롬 텍스트로 출력하고 싶을 때 사용한다. (터미널 호환성 문제 해결 등)
    • -U유니코드 문자가 아닌 ASCII로 그래프 표시. ncurses를 이용한 블록 문자가 깨져 보이는 터미널 환경에서, 유니코드 문자를 피하고 ASCII 문자로 단순 막대를 그려주는 옵션이다.
    • -H프로세스 하이라이트(Highlight) 기능. 새롭게 생성되거나 종료된 프로세스를 일정 시간 하이라이트해서 표시한다. (기본적으로 htop 설정에서 on/off 가능하며, -H 옵션으로 지정된 딜레이 시간 동안 변화된 프로세스를 강조 표시함)
    • --readonly읽기전용 모드. htop을 모니터링 전용으로 실행하여 시스템 변경 동작을 모두 비활성화한다. 이 모드에서는 프로세스 종료(F9)나 우선순위 변경(F7/F8) 등의 기능이 작동하지 않으며, 잘못된 조작으로 시스템에 영향을 주지 않고 안전하게 관찰만 할 때 유용하다.
    • -v 또는 --version – htop의 버전 정보를 출력하고 종료한다.

     

    주로 활용되는 옵션은 위와 같으며, 대부분 필요할 때 일시적으로 지정하여 사용한다. 예를 들어 특정 서비스 프로세스만 모니터링하려고 htop -p <PID>를 쓰거나, 다중 사용자 서버에서 자신의 프로세스만 보고 싶을 때 -u <사용자>를 쓰는 식이다. 기본값으로도 충분히 유용하지만, 이러한 옵션을 알아두면 상황에 맞게 htop을 커스터마이즈하여 사용할 수 있다. 모든 옵션 목록은 htop --help 명령이나 매뉴얼 페이지에서 확인 가능하다.

    728x90

    실제 사용 사례

    입문자 관점: 시스템 부하 시 확인해야 할 지표 예시

    시스템이 느려지거나 CPU 팬이 크게 도는 등의 부하 상황에서, 리눅스 입문자는 htop을 활용하여 원인을 파악할 수 있다. 예를 들어 컴퓨터가 버벅거릴 때 터미널에서 htop을 실행하면, 상단 헤더CPU 사용률 막대들을 통해 즉각적으로 모든 코어가 과부하 상태인지, 특정 코어만 치솟는지 확인할 수 있다. 만약 모든 CPU 막대가 100% 근처로 꽉 차 있고 빨간색 비중이 높다면, 커널 모드에서 CPU를 소모하는 작업이 많음을 의미한다. 한편 Load average 수치를 보면 (예: 5.00 4.20 3.10), 이 값이 사용 중인 코어 수보다 훨씬 높다면 CPU 대기 열이 길어 과부하 상태임을 알 수 있다.

     

    다음으로 프로세스 목록을 살펴 가장 상위에 나오는 프로세스를 확인한다. htop은 기본적으로 CPU 사용률 순으로 정렬되므로, 리스트 최상단의 프로세스들이 가장 많은 CPU를 소비하는 작업들이다. 예를 들어 목록 맨 위에 chrome 또는 java 프로세스가 있고 CPU%가 150% (듀얼코어 150%는 코어 1.5개 분 점유)라면, 해당 프로그램이 CPU를 집중적으로 사용 중임을 알 수 있다. 초보 사용자는 이 정보를 토대로 과부하 주범 프로세스를 파악한 뒤, 필요시 그 프로세스를 종료하여 시스템을 안정화할 수 있다 (htop 내에서 해당 행 선택 후 F9 눌러 종료 시그널 보내기).

     

    또한 메모리 사용량 지표도 중요한데, 상단 헤더의 Mem 막대를 보면 사용 중인 메모리와 전체 용량이 함께 표시된다 (예: Mem[||||||||||||||| 7.5G/8.0G]). 막대의 녹색 부분은 실제 프로그램들이 사용 중인 메모리, 파란색은 버퍼, 노란색은 캐시 메모리를 나타낸다. 만약 녹색 칸이 거의 끝까지 차 있고 (예: MEM% 95% 이상) Swap 사용량(Swp 막대)도 늘어나는 경우, 메모리 부족으로 스왑을 사용하고 있다는 신호다. 이때 htop 목록에서 MEM% 열을 눌러 정렬하거나 (단축키 M) 혹은 상단 메뉴 F6→MEM%를 선택하여 메모리 사용률 순 정렬을 하면, 어떤 프로세스가 가장 많은 메모리를 차지하는지 한눈에 볼 수 있다. 예컨대 어떤 프로세스가 MEM% 50% 이상을 독차지하고 있다면 해당 프로그램이 메모리 과다 사용 또는 누수(leak) 가능성이 있다. 초보자는 이렇게 htop을 이용해 주요 자원 지표(CPU, 메모리)를 확인하고, 문제의 원인이 되는 프로세스를 식별하여 대응할 수 있다.

     

    추가로, 스왑(Swap) 막대가 부분적으로 차 있다면 물리 메모리가 부족해 디스크 스왑을 사용 중인 것이다. 스왑 사용이 지속적으로 증가하면 시스템 속도가 급격히 저하되므로, htop으로 이를 감지해 불필요한 프로세스를 종료하거나 서비스 재구동 등의 조치를 취할 수 있다.

     

    요약하면, htop은 시스템 부하 원인 진단에 필수적인 지표들을 실시간 제공한다. 초보자는 복잡한 분석 없이도 CPU 막대 색상과 사용률, 메모리 막대의 사용량, 상위 프로세스 목록 등만 보고도 현재 어떤 자원이 부족하고 어떤 프로세스가 문제인지 직관적으로 파악할 수 있다. 이는 마치 윈도우 작업관리자를 보듯이 리눅스 시스템 상태를 이해할 수 있게 해주므로, 시스템이 느릴 때 당황하지 않고 효과적으로 대처하는 데 큰 도움이 된다.

     

    개발자 관점: 특정 프로세스 CPU/메모리 추적 및 디버깅

    소프트웨어 개발자에게 htop은 애플리케이션의 성능 문제를 추적하고 디버깅하는 데 유용한 도구이다. 개발 중인 프로그램이 CPU를 많이 잡아먹거나 메모리 누수가 의심될 때, htop을 통해 해당 프로세스의 자원 사용을 면밀히 모니터링할 수 있다. 예를 들어, 어떤 서버 프로세스가 갑자기 CPU 사용 100%를 차지하며 응답이 없다면, htop 실행 후 F3 키를 눌러 해당 프로세스 이름을 검색한다. htop은 입력과 동시에 실시간으로 필터링하므로, 몇 글자만 쳐도 리스트에 그 프로세스가 하이라이트되어 나타난다. 해당 프로세스를 선택한 상태에서 H 키를 눌러 스레드 보이기/숨기기를 토글하면, 멀티스레드 프로그램이라면 내부 쓰레드별 자원 사용도 확인할 수 있다. 이를 통해 특정 스레드가 CPU를 점유하고 있는지도 파악 가능하다.

     

    만약 메모리 누수를 의심한다면, htop을 띄워놓고 문제가 되는 프로세스의 RES (Resident memory) 값이나 MEM%가 시간이 지날수록 계속 증가하는지를 관찰한다. htop 화면은 실시간으로 갱신되므로, 몇 분 간격으로 메모리 사용이 꾸준히 늘어난다면 누수 가능성이 높다. 개발자는 이 과정을 통해 자신의 프로그램 메모리 관리 상태를 간접적으로 점검할 수 있다. 또한 필요시 F2 (Setup) 설정 메뉴에서 Memory 표시를 텍스트 모드로 전환하여 (예: used/free 수치 표시) 더 정확한 수치를 볼 수도 있다.

     

    htop만의 고급 기능은 디버깅 과정에서 특히 빛을 발한다. 예를 들어, htop에서 문제 프로세스를 선택하고 s를 누르면, 해당 프로세스에 strace를 붙여 시스템 호출(trace)을 실시간 모니터링할 수 있다. 이는 해당 프로세스가 현재 무슨 작업(파일 I/O, 네트워크, 락 대기 등)을 하고 있는지 추적하여 응답 없는 상태의 원인을 파악하는 데 도움이 된다. 마찬가지로 l를 누르면 lsof를 통해 열린 파일 디스크립터 목록을 표시해주므로, 어떤 파일이나 소켓을 붙들고 있는지 확인할 수 있다. 예를 들어 웹 서버 프로세스가 과도한 파일 핸들을 열어두고 있다면 l 키 출력으로 이를 즉시 알아낼 수 있다.

     

    개발자가 애플리케이션의 CPU 바인딩을 조정하고 싶을 때도 htop을 사용할 수 있다. 프로세스를 선택하고 a를 누르면 CPU affinity 설정 화면이 떠서, 해당 프로세스를 어떤 CPU 코어에서 돌릴지 마스킹할 수 있다. 이는 멀티코어 환경에서 특정 프로세스를 코어에 격리시켜 성능 테스트를 할 때 유용하다.

     

    마지막으로, htop을 통해 프로세스 우선순위(Nice 값) 조정도 즉각적으로 가능하므로 (F7/F8), 개발 중 CPU 시간을 많이 잡아먹는 백그라운드 작업의 우선순위를 낮춰 시스템 전체 성능에 끼치는 영향을 줄일 수 있다.

     

    이렇듯 htop은 개발자가 특정 프로세스의 동작과 자원 사용 패턴을 면밀히 추적하고, 나아가 strace, lsof 같은 도구와 연계한 심층 디버깅까지 손쉽게 수행하도록 돕는다. GUI 환경 없이도 터미널 한 화면에서 거의 모든 정보를 얻을 수 있기 때문에, 서버 사이드 개발이나 성능 튜닝 작업에서 htop은 없어서는 안 될 유용한 진단 도구로 활용되고 있다.

     

    교육자 관점: 시스템 자원 개념의 시각화 도구로 활용

    리눅스/운영체제 교육을 진행하는 교육자에게 htop은 추상적인 시스템 자원 개념을 시각적으로 보여주는 교보재로 활용될 수 있다. 이론으로 배우는 CPU 스케줄링, 메모리 관리, 프로세스 상태 등의 개념을 htop 화면을 통해 실습하면 학생들이 보다 쉽게 이해할 수 있기 때문이다.

     

    예를 들어, 수업 중에 교사가 htop을 프로젝터 화면에 띄워 놓고 간단한 데모를 할 수 있다. 한 터미널에서 무한 루프 계산을 도는 프로그램을 실행하면, htop의 해당 CPU 코어 막대가 금세 100%로 상승하여 빨간색 영역이 크게 늘어나는 것을 모두가 볼 수 있다. 이로써 학생들은 "CPU 사용률 100%"가 실제로 화면에 어떻게 드러나는지 체감하게 되고, 프로세스가 CPU를 독점하면 다른 작업이 지연된다는 것을 시각적으로 인지할 수 있다. 이어서 교사가 해당 프로세스를 F9로 강제 종료하면, 곧바로 CPU 막대가 떨어지고 시스템이 다시 정상 응답하는 모습이 나타난다. 이러한 실시간 피드백은 추상적인 개념을 현실감 있게 전달한다.

     

    또 다른 예로, 멀티스레드 프로그램과 단일스레드 프로그램을 각각 실행해 프로세스 트리(Tree)를 보여주면, 멀티스레드의 경우 htop 목록에서 동일한 이름의 쓰레드 여러 개가 트리 구조로 묶여 나타나는 것을 볼 수 있다. 이를 통해 학생들은 쓰레드와 프로세스의 관계를 눈으로 확인하고, F5 트리 모드로 부모-자식 관계를 살펴보며 데몬 프로세스가 자식 프로세스를 포크하는 과정 등을 이해할 수 있다. 또한 좀비 프로세스 실험을 위해 의도적으로 좀비 프로세스를 생성한 후 htop에서 상태(State) 컬럼에 Z로 표시된 좀비를 보여주고, 그것이 시스템에 남아있는 모습 등을 시연하면 추상적인 좀비 프로세스 개념이 명확히 와닿는다.

     

    메모리 관리 측면에서도 htop은 교육적이다. 예를 들어 파일 캐시의 개념을 가르칠 때, 큰 파일을 읽는 명령을 실행하고 나서 htop의 메모리 막대를 보면 녹색(사용 메모리) 부분은 크게 늘지 않았지만 노란색(캐시) 부분이 증가한 것을 관찰할 수 있다. 이는 리눅스가 여유 메모리를 디스크 캐시로 사용함을 나타내며, 학생들은 top과 htop의 메모리 표시 차이를 통해 "사용 가능 메모리 vs 캐시 메모리" 개념을 배울 수 있다. 실제 htop FAQ에서도 "htop의 메모리 사용률이 top보다 낮게 나오는데 이는 캐시/버퍼를 제외한 값이어서 더 의미있는 지표"라고 설명하고 있다[^3]. 이런 내용을 수업에 인용하며 실습하면 이해가 더욱 잘 된다.

     

    나아가, htop은 실시간성이 있기 때문에 학생들이 직접 여러 가지 시나리오를 실험해 볼 수도 있다. 예를 들어 "nice 값을 조정하면 스케줄링에 어떤 영향이 있을까?"를 궁금해 한다면, 두 개의 무거운 연산 프로세스를 하나는 기본 nice(0), 다른 하나는 낮은 우선순위(nice 19)로 실행한 뒤 htop에서 두 프로세스의 CPU 사용 추이를 비교해보게 할 수 있다. 결과적으로 nice 19 프로세스는 CPU를 훨씬 덜 쓰고 대기하게 됨을 htop으로 확인하면, 프로세스 우선순위 개념이 자연스럽게 체득된다.

     

    이처럼 htop은 운영체제의 동작을 눈으로 보여주는 시각화 도구로서 교육 현장에서 유용하다. 복잡한 개념도 실제 시스템에서 어떻게 나타나는지 실시간 데모와 실습으로 학습하면 학습 효과가 높아진다. 학생들은 하드웨어 자원이 소모되고 관리되는 과정을 컬러풀한 텍스트 인터페이스로 관찰하면서, 리눅스 시스템에 대한 직관적 이해를 쌓을 수 있다.

     

    대안 도구들과의 비교 (top, glances, bashtop/btop, atop, gotop 등)

    리눅스에는 htop 외에도 다양한 터미널 기반 모니터링 도구들이 존재하며, 각각 장단점과 UI/UX상의 특색이 있다. 주요 대안 도구들과 htop을 몇 가지 측면에서 비교해보면 다음과 같다.

    • top – 전통적인 시스템 모니터로 모든 리눅스에 기본 내장되어 있다. 실시간 프로세스 목록과 기본 지표를 제공하지만, 흑백 텍스트 UI이고 스크롤이나 마우스 지원이 없어 사용성이 떨어진다. top도 일부 단축키로 정렬 변경(M, P 등)이나 프로세스 검색(/), 종료(k) 등이 가능하지만, 설정 변경이 세션을 벗어나면 초기화되고 UI도 현대적이지 않다. htop은 이러한 top의 불편함을 개선하여, 컬러 강조, 스크롤 전체목록 조회, 마우스 클릭 등을 지원하고 설정을 ~/.config/htop/htoprc에 자동 저장하여 영구화한다. 요컨대 top은 가볍고 기본적이지만 불친절하고, htop은 좀 더 무겁지만 풍부한 인터페이스로 대체할 가치가 있다.
    • Glances – 파이썬으로 작성된 종합 시스템 모니터링 툴로, 시스템의 모든 주요 자원 정보를 한 화면에 최대한 많이 표시하는 것이 목표다[^5]. Glances는 CPU/메모리뿐 아니라 디스크 I/O, 네트워크 트래픽, 센서 온도, 파일시스템 용량, 운영체제 정보 등까지 보여주며, 터미널 창 크기에 따라 가변적으로 레이아웃을 조정한다. 또한 원격 모니터링 기능이 뛰어나, 서버에서 Glances를 서버 모드로 띄우고 웹 인터페이스나 CLI 클라이언트로 원격 접속해 볼 수 있다. 대시보드 형태로 여러 시스템의 지표를 한 곳에 모아볼 수도 있어 시스템 관리자에게 유용하다. 반면 Glances는 htop처럼 개별 프로세스를 상세 제어하기보다는 전체적인 시스템 헬스 체크에 초점이 맞춰져 있다. 프로세스 목록에서 선택 후 kill 등의 동작도 지원되지만 htop만큼 인터랙티브하지는 않다. 요약: Glances는 "한눈에 모든 것"을 지향하며 광범위한 모니터링 데이터를 제공하지만, 세부 프로세스 관리 측면에서는 htop보다 단순하다.
    • bashtop / btop++Bashtop은 Bash 스크립트로 구현된 모니터링 툴로 출발하여, 후속작 Btop++(또는 simply btop)은 C++로 재작성된 버전이다[^5][^6]. 이 계열 도구는 매우 세련되고 현대적인 터미널 UI를 자랑한다. 컬러풀한 그래프, 애니메이션 효과, 네온 스타일 디자인 등으로 시각적 만족도가 높고, 마우스 인터랙션도 htop 이상으로 잘 된다. 또한 CPU/메모리/디스크/네트워크 사용량을 각각 그래프로 표시하고, CPU 온도배터리 상태 등도 모듈 추가를 통해 보여줄 수 있다. btop은 UI는 화려하지만 리소스 사용은 최적화되어 있어 (C++ 덕분에) bashtop 시절보다 낮은 CPU/RAM 부하로 동작한다. bashtop(초기 버전)은 Bash로 작성된 만큼 다소 무겁고 실행 요건이 까다로웠지만, 최신 btop은 경량화에 성공하여 큰 부담 없이 쓸 수 있다. 요약: bashtop/btop은 가장 눈에 띄게 화려하고 사용하기 편한 UI를 갖춘 도구로, 시각적 효과와 사용자 친화성 측면에서는 htop을 앞서나, 본질적으로 보여주는 정보는 유사하며 취향에 따라 선택할 수 있다. 초보자나 비개발자도 쉽게 쓸 수 있을 정도로 GUI에 가까운 UX를 제공하므로, "터미널 태스크 매니저"로서 인기가 높다.
    • atop고급 시스템 모니터링/로그 툴로, htop이나 top과는 약간 성격이 다르다[^6]. 실시간 모니터링도 가능하지만, 특히 정기적인 시스템 자원 기록(logging)사후 분석에 강점이 있다. atop은 매 10분 등 일정 주기로 CPU, 메모리, 디스크, 네트워크 사용량 등을 이력 기록해 두었다가, 과거 특정 시점의 상태를 재생(playback)하여 분석할 수 있다. 예를 들어 밤중에 갑자기 서버 부하가 높아졌다면, 나중에 atop 로그를 열어 그 시각에 어떤 프로세스가 IO 대기나 CPU를 잡아먹었는지 조사할 수 있다. 또한 atop은 출력 시 자원이 한계치에 달한 부분을 색상 반전으로 강조하는 등, 병목 지점을 명확히 드러내준다. 다만 인터페이스는 top과 유사한 전통적 텍스트 UI로, 조작법이 다소 복잡하고 진입장벽이 있다. 요약: atop은 성능 튜닝/트러블슈팅 전문 도구로서 상세한 자원 모니터링과 이력 분석에 특화되어 있으며, 실시간 대화형 조작과 편의성 면에서는 htop보다 약간 무겁고 난이도가 높다.
    • gotop – Go 언어로 구현된 경량 터미널 모니터로, 이름처럼 top류 도구의 한 변종이다[^7]. gotop은 htop과 유사한 프로세스 목록도 보여주지만, 동시에 시스템 전반의 주요 지표를 대시보드 형식으로 제공한다. 기본 화면에 CPU (코어별 그래프), 메모리 및 스왑, 디스크 용량 및 IO, 네트워크 트래픽, CPU 온도 등의 위젯이 배치되어 있어 종합적인 모니터링이 가능하다. 인터페이스는 모듈화되어 있어 사용자 설정으로 표시 항목을 커스터마이즈할 수 있으며, 색상 테마도 변경 가능하다. gotop의 프로세스 테이블은 기본적으로 상위 CPU/메모리 프로세스를 표시하고, c/m/p 키로 정렬 기준을 전환하는 등 htop과 비슷한 단축키를 제공한다. 또한 / 키로 프로세스 검색, Shift+?로 도움말 등의 기능도 있어 사용법이 크게 다르지 않다. gotop은 원격 모니터링 기능도 갖추고 있어서, 원격 머신에서 동작 중인 gotop 인스턴스들을 모니터링 머신에서 통합 조회할 수 있는 독특한 기능이 있다. 설정을 하면 여러 서버의 gotop 데이터를 한 화면에 합쳐 볼 수도 있어, 경량 모니터링을 다수 서버에 적용하려는 경우 유용하다. 요약: gotop은 htop과 glances의 중간 지점에 있는 도구로, 가벼운 실행과 최적화된 UI를 가지면서도 디스크/네트워크/온도 등 부가 정보를 함께 보여준다. htop처럼 깊이있는 프로세스 제어보다는 종합 모니터링의 편의성을 지향하며, Go로 작성되어 설치와 실행이 비교적 간편한 것도 장점이다.

     

    정리하면, htop vs 대안들사용 목적과 취향에 따른 선택 문제라 할 수 있다. htop은 균형잡힌 올라운더로서 적당한 정보량과 조작 편의성을 제공하며, top의 사실상 표준 대체재로 자리잡았다. Glances는 원격 모니터링과 종합 현황 파악에 좋고, bashtop/btop은 미려한 UI로 사용 경험을 극대화한 도구다. atop은 깊이있는 자료 수집과 분석용이고, gotop은 경량 대시보드로 쓸 만하다. 사용자는 자신의 용도에 맞춰 이들 툴을 선택하거나 병행 사용하기도 한다. 예컨대 *"서버 상시 모니터링은 glances로 대시보드 띄워두고, 문제 발생 시 htop으로 들어가 상세히 본다"*와 같은 조합도 가능하다. 각 도구들은 서로 경쟁하면서도 보완적인 관계에 있다. (참고로, 이 밖에도 nmon, btop(btop++), gtop, vtop 등 여러 유사 툴이 존재하지만, 기본 개념은 위 언급한 도구들과 대동소이하다.)

     

    htop 설치 방법 (Ubuntu, RHEL, macOS 등)

    htop 설치는 대부분의 리눅스 배포판에서 간단하다. htop 패키지가 공식 저장소에 포함되어 있으므로, 배포판에 따라 다음과 같이 설치할 수 있다.

    • Debian/Ubuntu 계열 (우분투, 리눅스 민트 등): 기본 저장소에 있으며, APT 패키지 매니저로 설치한다.Ubuntu 및 데비안 계열에서는 위 명령으로 최신 htop을 설치할 수 있다.
      • sudo apt update && sudo apt install htop
    • Fedora: DNF 패키지 매니저를 사용하여 설치한다.Fedora의 기본 저장소에 htop이 포함되어 있다.
      • sudo dnf install htop
    • CentOS / RHEL 7, 8: 초기 설정으로는 htop 패키지가 없을 수 있다. EPEL(Extra Packages for Enterprise Linux) 저장소를 활성화한 후 설치해야 한다.CentOS 7의 경우도 yum install epel-release로 EPEL을 추가한 뒤 yum install htop으로 설치한다. RHEL에서는 서드파티 저장소 사용 정책에 따라 EPEL RPM을 수동으로 설치한 후 진행한다. 한번 설치하면 htop 명령을 바로 사용할 수 있다.
      • # CentOS/RHEL 8 예시 - sudo yum install epel-release sudo yum install htop
    • Rocky Linux / AlmaLinux: CentOS와 동일하게 EPEL 추가 후 yum install htop으로 설치한다.
    • Arch Linux: pacman -S htop 명령으로 설치한다.
    • Gentoo: emerge sys-process/htop으로 설치 (소스 컴파일).
    • OpenSUSE: sudo zypper install htop으로 설치.
    • macOS: Homebrew 패키지 매니저를 통해 설치할 수 있다. 우선 Homebrew가 깔려있다는 전제 하에, 터미널에서를 실행하면 된다. 설치 후 맥OS에서는 htop 실행 시 제한된 정보만 보일 수 있는데, 이는 macOS의 보안 정책상 일반 사용자가 모든 프로세스 정보를 열람할 수 없기 때문이다. 전체 프로세스를 모니터링하려면 sudo htop으로 루트 권한으로 실행해야 한다. Homebrew 공식 문서에서도 "모든 프로세스를 보려면 root 권한이 필요하다"고 명시하고 있으므로[^8], macOS 사용자는 이를 유의해야 한다. (권한 상승 없이도 자기 계정의 프로세스는 모니터링 가능하나, 시스템 프로세스나 다른 사용자 프로세스는 보이지 않음)
      • brew install htop
    • Windows: htop은 리눅스/유닉스용 도구이므로 Windows에는 직접적으로 설치할 수 없다. 다만 WSL(Windows Subsystem for Linux)을 통해 우분투 등의 리눅스 환경을 사용 중이라면 그 안에서 apt install htop으로 설치하여 활용 가능하다. 또는 Windows에서 유사한 UI를 원한다면 프로세스 탐색기(Process Explorer) 등의 GUI 도구를 써야 한다.

     

    대부분의 경우, 리눅스 배포판에서는 htop이 기본 저장소에 포함되어 있으므로 위와 같은 명령으로 설치가 끝난다. 설치 후 htop 명령을 입력하면 곧바로 대화형 화면이 나타나 제대로 동작하는지 확인할 수 있다. 만약 패키지 관리자로 최신 버전을 제공하지 않거나 소스를 직접 빌드하고 싶다면, htop 공식 GitHub에서 소스코드를 받아 컴파일 설치할 수도 있다. 일반적으로는 패키지 매니저 버전으로도 충분하지만, cutting-edge 기능이 필요한 경우 소스 컴파일 방법도 문서화되어 있다.

     

    마지막으로, htop 사용 권한 관련 팁을 덧붙이면: htop은 시스템 프로세스를 다루기 때문에, 몇 가지 기능(예: 다른 사용자 프로세스 kill 등)은 루트 권한이 있어야 동작한다. 리눅스에서는 보통 일반 사용자로도 htop 실행은 가능하며 본인 프로세스와 시스템 리소스를 읽기전용으로 모니터링할 수 있다. 그러나 프로세스 종료(F9)nice 값 변경(F7/F8)은 대상이 자기 소유 프로세스가 아니면 권한이 없으므로 실패할 수 있다. 이럴 때는 sudo htop으로 슈퍼유저 권한을 얻어 실행하면 모든 기능이 제한 없이 동작한다. 다만 root로 htop을 켜두면 실수로 중요한 시스템 프로세스를 종료하는 등의 사고 가능성도 있으므로, 필요한 경우에만 root로 실행하는 것이 좋다.

     

    마치며

    지금까지 htop에 대하여 정리해보았다. 간단한 설치로 터미널에서 프로세스에 대한 정보들을 확인할 수 있음과 동시에, 터미널에 대한 제어를 마우스 클릭으로 할 수 있다는 점은 참 매력적인 것 같다.

     

    위에 기술 된 것처럼 htop은 top의 대체재로 확실히 자리 매김을 한 것 같으나, 다른 툴들도 각자의 특화된 분야가 있다 보니 한 번씩 건들여 봐야겠다는 생각은 들었다. 언젠가는 적절한 툴을 적재적소에 사용할 수 있는 서비스를 운영할 날이 오길 기대해본다.


    참고 문헌

    [^1]: Tecmint – "Htop – An Interactive Process Viewer for Linux" (feature differences of htop vs top)
    [^2]: GeeksforGeeks – "htop command in Linux with examples" (common options and interactive keys)
    [^3]: htop Official FAQ – "Why does htop show a low memory percentage?" (memory meter explanation)
    [^4]: Rocky Linux Documentation – "htop – Process Management" (color codes and ease of use)
    [^5]: It's FOSS – "9 System Monitoring Tools for Linux That are Better Than Top" (glances, bashtop, etc. overview)
    [^6]: SecOps Solution – "atop vs btop vs htop" (feature comparison and use-cases)
    [^7]: OMG! Ubuntu – "Gotop is a Neat Command-Line System Monitor for Linux" (gotop features and usage)
    [^8]: Homebrew Formulae – "htop" (macOS installation notes)

    728x90
    728x90
    댓글