개요
리눅스 서버 운영 및 시스템 모니터링에서 가장 기본이자 필수적인 top 명령어의 핵심 사용법을 다룹니다. 기본 실행 화면의 주요 지표 해석부터 실무에서 유용한 옵션별 실행 결과와 단축키까지 실습을 통해 한눈에 마스터할 수 있습니다.
top 기본 실행 및 배치 모드(Batch Mode)를 통한 요약 출력
top 명령어는 시스템의 CPU 점유율, 메모리 사용량, 실행 중인 프로세스 목록을 실시간으로 확인하는 가장 대표적인 모니터링 도구입니다.
지속적으로 갱신되는 대화형 화면 대신, 스크립트 작성이나 텍스트 파일 저장에 유용한 배치 모드(-b)와 실행 횟수 제한(-n 1) 옵션을 결합해 상위 15줄을 간결하게 출력합니다.
이를 통해 전체적인 시스템 로드 에버리지(Load Average) 및 자원 상태를 1회성 스냅샷 형태로 빠르게 파악할 수 있습니다.
⚙️ [주요 옵션]
-b : 화면 제어 코드를 제거하고 표준 출력으로 연속 텍스트를 내보내는 배치(Batch) 모드로 실행합니다.-n : 화면을 갱신할 횟수를 지정한 뒤 명령어를 자동으로 종료합니다.-d : 화면 갱신 주기(초 단위 지연 시간)를 설정합니다.-p : 모니터링할 특정 프로세스의 ID(PID)만 지정하여 추적합니다.-u : 특정 사용자(User)가 소유한 프로세스만 필터링하여 출력합니다.-c : 프로세스의 단순 이름 대신 전체 실행 경로와 명령행 인자(커맨드라인)를 표시합니다.

특정 사용자 프로세스만 필터링하여 모니터링하기
-u 옵션 뒤에 특정 계정명을 지정하면 해당 사용자가 소유한 프로세스만 선별하여 모니터링할 수 있습니다.top -b -n 1 -u root | head -n 15 명령어를 실행하여 시스템 관리자 계정인 root 권한으로 실행 중인 핵심 프로세스들의 리소스 점유 상태를 상위 15줄로 필터링해 확인합니다.

$(whoami) 명령어를 활용하면 현재 쉘에 로그인된 사용자의 이름을 동적으로 전달하여 프로세스를 조회할 수 있습니다.top -b -n 1 -u $(whoami) | head -n 15 명령어를 통해 현재 접속 중인 계정이 실행한 프로세스 목록만 간결하게 추출하여 자원 사용량을 파악합니다.

특정 프로세스 ID(PID) 모니터링 및 화면 갱신 주기 설정
모니터링 대상 프로세스의 식별 번호를 확인하기 위해 PID=$(pgrep -f systemd | head -n 1 || echo 1) 명령어를 실행하여 실행 중인 systemd 프로세스의 PID를 환경 변수에 저장합니다.

top -b -n 2 -d 1 -p $PID 명령어를 실행하여 지정한 프로세스 ID($PID)만 선별하고, 1초 간격(-d 1)으로 2회(-n 2) 갱신되는 화면을 배치 모드(-b)로 출력합니다.
이를 통해 특정 대상 프로세스의 CPU 점유율, 메모리 사용량, 시스템 로드 변화를 실시간으로 연속 추적할 수 있습니다.

메모리(RES) 및 CPU 사용량 기준 정렬과 실무 단축키 활용
top -b -n 1 -o %MEM | head -n 15 명령어를 실행하여 메모리 점유율(%MEM)을 기준으로 프로세스 목록을 내림차순 정렬해 상위 15줄을 출력합니다.
이를 통해 물리 메모리(RES)를 과도하게 점유하여 메모리 부족(OOM)을 유발할 가능성이 있는 프로세스를 빠르게 식별할 수 있습니다.

top -b -n 1 -o %CPU | head -n 15 명령어를 실행하여 CPU 점유율(%CPU)을 기준으로 프로세스 목록을 정렬해 확인합니다.
이를 통해 프로세서 연산 자원을 집중적으로 소비하며 시스템 부하(Load Average)를 높이는 병목 원인 프로세스를 즉시 선별할 수 있습니다.

지금까지 우분투 환경에서 top 명령어의 핵심 옵션과 화면 지표를 분석하는 방법을 정리해보았습니다.
알려드린 모니터링 팁과 단축키를 활용해 서버 자원을 더욱 안정적이고 효율적으로 관리해 보세요.