ps
ps는 Linux 등 UNIX 계열 운영체제에서 현재 실행 중인 프로세스의 상태를 확인하는 명령어이다. ps 명령어만 사용하면 현재 사용자가 실행중인 프로세스의 목록과 정보를 보여주며, 다양한 옵션을 추가하여 모든 프로세스를 보거나 프로세스에 대한 더 자세한 정보를 획득할 수 있다.
Process ID(PID)
메모리 공간을 차지하여 실행 중인 프로그램 하나하나를 프로세스라고 부르며, 각 프로세스는 고유한 PID(Process ID)가 부여되어 시스템이 해당 프로세스를 구분하고 제어하는데 쓰인다.
ps 주요 옵션
앞에 -(대시)가 붙는 옵션
- -e : 모든 프로세스 표시
- -f : UID, PPID 등 full format으로 출력
- -u <user> : 특정 사용자 프로세스만 출력
- -p <PID> : 특정 PID만 출력
- ps -fp <PID>
- -o <...> : 원하는 컬럼만 출력
- ps -eo pid,ppid,cmd,%cpu,%mem
- --sort =[-]<...> : 정렬
- ps -eo pid,cmd,%cpu --sort=-%cpu (디폴트 오름차순, -가 붙으면 내림차순)
- --forest : 트리 구조 출력
- ps -ef --forest
앞에 -(대시)가 안붙는 옵션
- a : 다른 사용자 프로세스까지 포함해서 출력
- u : USER와 %CPU, %MEM 컬럼 포함해서 출력
- x : 터미널과 연결되지 않는 프로세스(ex. 백그라운드에서 동작 중인 데몬 등)도 포함하여 출력
기본 옵션
보통 기본 조합으로 ps -ef 또는 ps aux를 사용하는데, 프로세스 간의 관계를 추적할 때는 ps -ef, 프로세스의 자원 사용률을 분석할 때는 ps aux를 많이 사용한다.
이름으로 프로세스 찾기
ps -ef | grep nginx
또는
pgrep -a nginx
또는
pidof nginx
pgrep은 이름 기반으로 매칭되는 PID만 출력하는 명령어이며, -a 옵션을 사용하면 실행된 명령어까지 함께 출력한다.
pidof 역시 프로세스 이름을 기반으로 PID를 찾는 명령이지만, prgep이 패턴 매칭 방식이라면 pidof는 정확히 일치하는 이름의 프로세스만 찾는다는 차이가 있다.
특정 파일 또는 특정 포트를 점유하고 있는 프로세스 찾기 (lsof와 ps 조합)
lsof 명령(list open files)은 어떤 프로세스가 어떤 파일 또는 포트를 열고 있는지 보여주는 명령어로, 해당 명령어를 사용해 PID를 확인하고 ps -fp <PID> 로 상세 정보를 조회할 수 있다.
특정 포트를 쓰는 프로세스 찾기
sudo lsof -i :8080
특정 파일을 열고 있는 프로세스 찾기
sudo lsof /var/lib/dpkg/lock
특정 PID를 가진 프로세스의 상세 정보 출력
ps -fp <PID>
PID를 알아낸 후 활용할 수 있는 유용한 명령어
프로세스 정상 종료 요청 (SIGTERM)
kill <PID>
프로세스 강제 종료 (SIGKILL)
kill -9 <PID>
프로세스 트리 확인
pstree -p <PID>
프로세스 실행 파일 경로 확인
sudo ls -l /proc/<PID>/exe
프로세스를 실행한 커맨드라인 확인
sudo cat /proc/<PID>/cmdline
프로세스가 열고 있는 파일 및 포트 확인
lsof -p <PID>
프로세스가 사용하고 있는 리소스 모니터링
top -p <PID>
'운영체제 > Linux' 카테고리의 다른 글
| Linux ] ln 명령어 사용법 (0) | 2025.11.15 |
|---|---|
| Linux ] top 명령어 사용법 (0) | 2025.11.09 |
| Linux ] NAS 마운트 방법 (0) | 2025.10.12 |
| Linux ] rsync 명령어 사용법 (0) | 2025.10.09 |
| Linux ] 네트워크 인터페이스 이름을 Predictable Network Interface Naming에서 전통적인 명명규칙(eth*)으로 바꾸기 (0) | 2025.10.01 |