Post

[Linux] 프로세스 확인 명령어 모음 (ps, top, lsof, ss)

[Linux] 프로세스 확인 명령어 모음 (ps, top, lsof, ss)

리눅스 서버를 운영하다 보면 현재 실행 중인 프로세스를 확인해야 하는 상황이 자주 발생합니다.
이번 포스팅에서는 프로세스를 확인하는 명령어들을 용도별로 정리해보겠습니다.

프로세스 종료 방법은 [Linux] 프로세스 종료 명령어 모음 (kill, pkill, fuser) 포스팅을 참고해주세요.

1. 프로세스 직접 조회


아래는 프로세스 이름이나 PID를 기준으로 직접 확인하는 명령어들입니다.

1-1. ps

ps(Process Status)는 현재 실행 중인 프로세스의 스냅샷을 출력하는 명령어입니다.

1
$ ps [옵션]

다음은 ps 명령어의 주요 옵션입니다.

OptionDescription
-e시스템의 모든 프로세스를 출력
-fPID, PPID, 시작 시간 등의 상세 정보를 출력
-u특정 사용자의 프로세스를 출력
aux모든 사용자의 프로세스를 상세 정보와 함께 출력

아래는 가장 많이 사용되는 조합으로, 모든 프로세스를 상세하게 출력합니다.

1
2
3
4
5
$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 169600 13312 ?        Ss   09:00   0:01 /sbin/init
ubuntu    1023  0.2  0.8 225600 65536 ?        S    09:03   0:05 python3 app.py
www-data  1234  0.5  1.2 512340 102400 ?       S    09:05   0:10 nginx: worker process

특정 프로세스를 이름으로 필터링할 때는 grep과 조합하여 사용합니다.

1
2
$ ps aux | grep nginx
www-data  1234  0.5  1.2 512340 102400 ?       S    09:05   0:10 nginx: worker process

1-2. pgrep

pgrep은 프로세스 이름을 기반으로 PID만 빠르게 조회하는 명령어입니다.
ps | grep 조합보다 간결하게 사용할 수 있습니다.

1
$ pgrep [프로세스 이름]

아래는 nginx 프로세스의 PID를 조회하는 예시입니다.

1
2
3
$ pgrep nginx
1234
5678

-l 옵션을 사용하면 PID와 함께 프로세스 이름도 출력됩니다.

1
2
3
$ pgrep -l nginx
1234 nginx
5678 nginx

1-3. top

top은 실시간으로 시스템의 프로세스 현황과 리소스 사용량을 모니터링하는 명령어입니다.

1
$ top

CPU, 메모리 사용률이 높은 프로세스를 찾을 때 유용하며, q를 누르면 종료됩니다.

top의 개선된 버전으로 htop이 있으며, 더 직관적인 UI와 마우스 인터랙션을 지원합니다.
sudo apt install htop 명령어로 설치할 수 있습니다.

2. 포트 기반 프로세스 조회


특정 포트를 사용 중인 프로세스를 확인해야 하는 경우, 아래 명령어들을 활용할 수 있습니다.

2-1. lsof

lsof(List Open Files)는 현재 열려 있는 파일 및 네트워크 소켓 정보를 출력하는 명령어입니다.
리눅스에서는 네트워크 소켓도 파일로 취급되기 때문에, 포트를 점유한 프로세스를 찾는 데 유용하게 활용됩니다.

1
$ lsof -i :[포트번호]

아래는 8000번 포트를 사용 중인 프로세스를 조회하는 예시입니다.

1
2
3
$ lsof -i :8000
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python3  1234  ubuntu   3u  IPv4  12345      0t0  TCP *:8000 (LISTEN)

출력 결과에서 PID 컬럼의 값이 해당 포트를 점유한 프로세스의 ID입니다.

다른 사용자가 실행한 프로세스는 권한 없이 조회되지 않으므로, sudo 권한으로 실행해야 합니다.

lsof가 설치되어 있지 않다면 sudo apt install lsof 명령어로 설치할 수 있습니다.

2-2. ss

ss(Socket Statistics)는 네트워크 소켓 정보를 조회하는 명령어로, 기존의 netstat을 대체하는 최신 도구입니다.

1
$ ss -tulnp | grep [포트번호]

다음은 ss 명령어의 주요 옵션입니다.

OptionDescription
-tTCP 소켓 정보 출력
-uUDP 소켓 정보 출력
-l현재 LISTEN 상태인 소켓만 출력
-n호스트명, 포트명을 숫자로 출력
-p소켓을 사용 중인 프로세스 정보 출력

아래는 8000번 포트를 사용 중인 프로세스를 조회하는 예시입니다.

1
2
$ ss -tulnp | grep 8000
tcp   LISTEN 0  5  0.0.0.0:8000  0.0.0.0:*  users:(("python3",pid=1234,fd=3))

2-3. netstat

netstat은 네트워크 연결 상태 및 소켓 정보를 출력하는 명령어입니다.
ss와 유사한 역할을 하며, 오래된 환경이나 익숙한 도구를 선호하는 경우에 사용합니다.

1
$ netstat -tulnp | grep [포트번호]

아래는 8000번 포트를 사용 중인 프로세스를 조회하는 예시입니다.

1
2
$ netstat -tulnp | grep 8000
tcp  0  0  0.0.0.0:8000  0.0.0.0:*  LISTEN  1234/python3

최신 리눅스 배포판에서는 netstat이 기본으로 포함되지 않을 수 있습니다.
sudo apt install net-tools 명령어로 설치할 수 있습니다.

3. 명령어 비교


명령어용도특징
ps프로세스 전체 조회스냅샷 방식, grep과 조합하여 필터링
pgrep이름으로 PID 조회간결하고 빠름
top실시간 모니터링CPU, 메모리 기준 정렬
lsof포트 기반 프로세스 조회PID, 사용자 등 상세 정보 출력
ss포트/소켓 정보 조회netstat의 최신 대체 도구
netstat포트/소켓 정보 조회레거시 환경에서 사용
This post is licensed under CC BY 4.0 by the author.