개인 프로젝트 용으로 작은 사이즈의 AWS EC2를 사용하다보면 프로세스가 확 튀어오르거나 꽉 찰 때가 종종 있습니다.
이럴 때 타이밍을 놓치면 서버가 뻗어버려 재부팅을 하기가 일쑤이기 때문에
이를 방지하고, 프로세스를 확인하고 종료하는 습관을 들이기 위해서 정리하게 되었습니다.
ps
1) ps -ef
실행 중인 프로세스 전체 목록 출력
2) ps -ef | grep 프로세스 이름
특정 이름으로 실행되고 있는 프로세스의 정보들만 출력
3) ps 옵션
-e
: 현재 실행중인 모든 프로세스의 정보 출력
-f
: 프로세스에 대한 자세한 정보 출력
-u
: 특정 사용자에 대한 모든 프로세스의 정보 출력
-p
: 특정 pid에 대한 정보를 출력
a
: 터미널에서 실행한 프로세스의 정보 출력
u
: 프로세스 소유자의 이름, CPU 및 메모리 사용량 등의 상세한 정보 출력
x
: 실행 중인 모든 프로세스의 정보를 출력
top
1) 실행 전 옵션
- -b
: 순간의 정보를 확인 가능(batch 모드)
- -n
: top 실행 주기 설정(반복 횟수)
2) top 실행 후 명령어
3) ps
와 top
의 차이점
ps
는 ps
한 시점에 검색한 cpu 사용량top
은 일정 주기로 합산해 cpu 사용률 출력4) 프로세스 상태 값 의미
load average
: 현재 시스템이 얼마나 일을 하는 지 나타냄. 3개의 숫자는 1, 5, 15분 간의 평균 실행/대기 중인 프로세스의 수. CPU 코어수 보다 적으면 문제 없음Tasks
: 프로세스 개수MiB Mem, Swap
: 각 메모리이 사용량(단위: MB)PR
: 실행 우선순위 (1 ~ 139)NI
: 실행 우선순위에 영향을 주는 CPU 스케쥴링 값 (-20 ~ 19)VIRT
: 프로세스에 할당된 가상 메모리 전체 (SWAP + RES)RES
: 실제로 메모리에 올려서 사용하고 있는 물리 메모리SHR
: 다른 프로세스와 공유하고 있는 shared memory의 양S
: 프로세스 상태D
: Uninterruptiable sleep. 디스크 혹은 네트워크 I/O를 대기R
: 실행 중 (CPU 자원을 소모)S
: Sleeping 상태, 요청한 리소스를 즉시 사용 가능T
: Traced or Stopped. 보통의 시스템에서 자주 볼 수 없는 상태Z
: zombie. 부모 프로세스가 죽은 자식 프로세스I
: 유휴 프로세스kill -i {PID}